From 131413e630b9da3f60e2b1b5acf5cdfdf19cd471 Mon Sep 17 00:00:00 2001 From: Jeremy Anderson Date: Sun, 28 Jun 2026 11:37:44 -0400 Subject: [PATCH] AI-LSC v3.0 - AI Local Stack Control --- .gitignore | 73 + README.md | 349 ++ ai-lsc-logo.png | Bin 0 -> 1236348 bytes ai_lsc.py | 63 + bootstrap.sh | 347 ++ docs/ADR-001-capability-architecture.md | 955 +++++ docs/screenshots/chat-console.png | Bin 0 -> 56347 bytes docs/screenshots/code-analysis.png | Bin 0 -> 71708 bytes docs/screenshots/deployment-targets.png | Bin 0 -> 65016 bytes docs/screenshots/infrastructure-layers.png | Bin 0 -> 68518 bytes docs/screenshots/ipc-stack-editor.png | Bin 0 -> 71708 bytes docs/screenshots/monitor-dashboard.png | Bin 0 -> 79921 bytes docs/screenshots/overview.png | Bin 0 -> 79921 bytes docs/screenshots/settings.png | Bin 0 -> 53351 bytes docs/screenshots/skills-console.png | Bin 0 -> 53445 bytes docs/screenshots/tools-registry.png | Bin 0 -> 71708 bytes docs/screenshots/verification-tab.png | Bin 0 -> 50729 bytes gitcommit | 114 + pyproject.toml | 76 + quickstart.md | 224 ++ run.sh | 65 + src/ai_lsc/__init__.py | 151 + src/ai_lsc/__main__.py | 35 + src/ai_lsc/agents/__init__.py | 45 + src/ai_lsc/agents/agent_loop.py | 207 ++ src/ai_lsc/agents/clarification_gate.py | 265 ++ src/ai_lsc/agents/dispatcher.py | 272 ++ src/ai_lsc/agents/librechat_config.py | 301 ++ src/ai_lsc/agents/litellm_config.py | 245 ++ src/ai_lsc/agents/model_pool.py | 226 ++ src/ai_lsc/agents/ollama_tools.py | 148 + src/ai_lsc/agents/orchestrator.py | 554 +++ src/ai_lsc/agents/qdrant_bridge.py | 344 ++ src/ai_lsc/agents/redis_bridge.py | 367 ++ src/ai_lsc/agents/schema.py | 208 ++ src/ai_lsc/agents/skill_injector.py | 276 ++ src/ai_lsc/agents/skill_resolver.py | 276 ++ src/ai_lsc/agents/tool_bridge.py | 147 + src/ai_lsc/chat/__init__.py | 1 + src/ai_lsc/chat/api.py | 165 + src/ai_lsc/constants.py | 185 + src/ai_lsc/guardrails.py | 290 ++ src/ai_lsc/manifest/__init__.py | 1 + src/ai_lsc/manifest/support.py | 155 + src/ai_lsc/registry/__init__.py | 1 + src/ai_lsc/registry/defaults.py | 3287 +++++++++++++++++ src/ai_lsc/registry/layers/__init__.py | 6 + src/ai_lsc/registry/layers/automation.py | 785 ++++ src/ai_lsc/registry/layers/containers.py | 256 ++ src/ai_lsc/registry/layers/data_knowledge.py | 319 ++ src/ai_lsc/registry/layers/development.py | 118 + src/ai_lsc/registry/layers/distributed.py | 141 + src/ai_lsc/registry/layers/endpoints.py | 285 ++ src/ai_lsc/registry/layers/gpu.py | 70 + src/ai_lsc/registry/layers/host_platform.py | 217 ++ src/ai_lsc/registry/layers/inference.py | 190 + .../registry/layers/intelligent_routing.py | 141 + .../registry/layers/knowledge_management.py | 140 + src/ai_lsc/registry/layers/observability.py | 185 + src/ai_lsc/registry/layers/user_interfaces.py | 350 ++ src/ai_lsc/registry/loader.py | 89 + src/ai_lsc/registry/manager.py | 90 + .../registry/stack_templates/__init__.py | 8 + .../stack_templates/agentic-os-stack.json | 33 + .../stack_templates/ai-image-gen-local.json | 24 + .../aider-ollama-vibe-coding.json | 27 + .../stack_templates/claude-code-setup.json | 46 + .../deepseek-r1-local-reasoning.json | 29 + .../hermes-ai-coder-stack.json | 41 + .../stack_templates/local-llm-lab.json | 31 + .../registry/stack_templates/manager.py | 263 ++ .../multi-agent-crewai-local.json | 28 + .../n8n-ai-workflow-automation.json | 30 + .../stack_templates/open-webui-full-rag.json | 28 + .../openhands-autonomous-coder.json | 30 + .../openjarvis-intelligence-stack.json | 71 + .../privacy-first-ai-laptop.json | 30 + src/ai_lsc/registry/validator.py | 147 + src/ai_lsc/runtime/__init__.py | 20 + src/ai_lsc/runtime/executor.py | 300 ++ src/ai_lsc/runtime/installer.py | 807 ++++ src/ai_lsc/runtime/lxc.py | 299 ++ src/ai_lsc/runtime/process.py | 58 + src/ai_lsc/runtime/status.py | 50 + src/ai_lsc/runtime/systemd.py | 44 + src/ai_lsc/runtime/tmux.py | 147 + src/ai_lsc/service/__init__.py | 1 + src/ai_lsc/skills/__init__.py | 1 + .../skills/agent-orchestrator.skill.json | 32 + src/ai_lsc/skills/code-reviewer.skill.json | 33 + src/ai_lsc/skills/rag-analyst.skill.json | 31 + src/ai_lsc/skills/redis-operator.skill.json | 32 + src/ai_lsc/skills/resolver.py | 62 + src/ai_lsc/skills/stack-operator.skill.json | 29 + src/ai_lsc/skills/vector-search.skill.json | 37 + src/ai_lsc/stack/__init__.py | 1 + src/ai_lsc/stack/export.py | 327 ++ src/ai_lsc/types.py | 315 ++ src/ai_lsc/ui/__init__.py | 39 + src/ai_lsc/ui/dialogs/__init__.py | 1 + src/ai_lsc/ui/dialogs/stack_wizard.py | 562 +++ src/ai_lsc/ui/main_window.py | 1204 ++++++ src/ai_lsc/ui/pages/__init__.py | 48 + src/ai_lsc/ui/pages/chatbot_console.py | 632 ++++ src/ai_lsc/ui/pages/code_analysis_tab.py | 391 ++ src/ai_lsc/ui/pages/container_stacks_tab.py | 71 + src/ai_lsc/ui/pages/datasets_tab.py | 94 + src/ai_lsc/ui/pages/git_worktree_tab.py | 149 + .../ui/pages/infrastructure_layer_page.py | 63 + src/ai_lsc/ui/pages/ipc_stack_tab.py | 198 + src/ai_lsc/ui/pages/service_row.py | 515 +++ src/ai_lsc/ui/pages/settings_page.py | 54 + src/ai_lsc/ui/pages/skills_console.py | 252 ++ src/ai_lsc/ui/pages/tools_tab.py | 57 + src/ai_lsc/ui/pages/verification_tab.py | 429 +++ src/ai_lsc/ui/protocol.py | 67 + src/ai_lsc/utils/__init__.py | 1 + src/ai_lsc/utils/filesystem.py | 59 + src/ai_lsc/utils/logging.py | 73 + src/ai_lsc/utils/ollama.py | 87 + src/ai_lsc/utils/paths.py | 82 + src/ai_lsc/utils/process.py | 128 + 122 files changed, 22548 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 ai-lsc-logo.png create mode 100755 ai_lsc.py create mode 100755 bootstrap.sh create mode 100644 docs/ADR-001-capability-architecture.md create mode 100644 docs/screenshots/chat-console.png create mode 100644 docs/screenshots/code-analysis.png create mode 100644 docs/screenshots/deployment-targets.png create mode 100644 docs/screenshots/infrastructure-layers.png create mode 100644 docs/screenshots/ipc-stack-editor.png create mode 100644 docs/screenshots/monitor-dashboard.png create mode 100644 docs/screenshots/overview.png create mode 100644 docs/screenshots/settings.png create mode 100644 docs/screenshots/skills-console.png create mode 100644 docs/screenshots/tools-registry.png create mode 100644 docs/screenshots/verification-tab.png create mode 100644 gitcommit create mode 100644 pyproject.toml create mode 100644 quickstart.md create mode 100755 run.sh create mode 100644 src/ai_lsc/__init__.py create mode 100644 src/ai_lsc/__main__.py create mode 100644 src/ai_lsc/agents/__init__.py create mode 100644 src/ai_lsc/agents/agent_loop.py create mode 100644 src/ai_lsc/agents/clarification_gate.py create mode 100644 src/ai_lsc/agents/dispatcher.py create mode 100644 src/ai_lsc/agents/librechat_config.py create mode 100644 src/ai_lsc/agents/litellm_config.py create mode 100644 src/ai_lsc/agents/model_pool.py create mode 100644 src/ai_lsc/agents/ollama_tools.py create mode 100644 src/ai_lsc/agents/orchestrator.py create mode 100644 src/ai_lsc/agents/qdrant_bridge.py create mode 100644 src/ai_lsc/agents/redis_bridge.py create mode 100644 src/ai_lsc/agents/schema.py create mode 100644 src/ai_lsc/agents/skill_injector.py create mode 100644 src/ai_lsc/agents/skill_resolver.py create mode 100644 src/ai_lsc/agents/tool_bridge.py create mode 100644 src/ai_lsc/chat/__init__.py create mode 100644 src/ai_lsc/chat/api.py create mode 100644 src/ai_lsc/constants.py create mode 100644 src/ai_lsc/guardrails.py create mode 100644 src/ai_lsc/manifest/__init__.py create mode 100644 src/ai_lsc/manifest/support.py create mode 100644 src/ai_lsc/registry/__init__.py create mode 100644 src/ai_lsc/registry/defaults.py create mode 100644 src/ai_lsc/registry/layers/__init__.py create mode 100644 src/ai_lsc/registry/layers/automation.py create mode 100644 src/ai_lsc/registry/layers/containers.py create mode 100644 src/ai_lsc/registry/layers/data_knowledge.py create mode 100644 src/ai_lsc/registry/layers/development.py create mode 100644 src/ai_lsc/registry/layers/distributed.py create mode 100644 src/ai_lsc/registry/layers/endpoints.py create mode 100644 src/ai_lsc/registry/layers/gpu.py create mode 100644 src/ai_lsc/registry/layers/host_platform.py create mode 100644 src/ai_lsc/registry/layers/inference.py create mode 100644 src/ai_lsc/registry/layers/intelligent_routing.py create mode 100644 src/ai_lsc/registry/layers/knowledge_management.py create mode 100644 src/ai_lsc/registry/layers/observability.py create mode 100644 src/ai_lsc/registry/layers/user_interfaces.py create mode 100644 src/ai_lsc/registry/loader.py create mode 100644 src/ai_lsc/registry/manager.py create mode 100644 src/ai_lsc/registry/stack_templates/__init__.py create mode 100644 src/ai_lsc/registry/stack_templates/agentic-os-stack.json create mode 100644 src/ai_lsc/registry/stack_templates/ai-image-gen-local.json create mode 100644 src/ai_lsc/registry/stack_templates/aider-ollama-vibe-coding.json create mode 100644 src/ai_lsc/registry/stack_templates/claude-code-setup.json create mode 100644 src/ai_lsc/registry/stack_templates/deepseek-r1-local-reasoning.json create mode 100644 src/ai_lsc/registry/stack_templates/hermes-ai-coder-stack.json create mode 100644 src/ai_lsc/registry/stack_templates/local-llm-lab.json create mode 100644 src/ai_lsc/registry/stack_templates/manager.py create mode 100644 src/ai_lsc/registry/stack_templates/multi-agent-crewai-local.json create mode 100644 src/ai_lsc/registry/stack_templates/n8n-ai-workflow-automation.json create mode 100644 src/ai_lsc/registry/stack_templates/open-webui-full-rag.json create mode 100644 src/ai_lsc/registry/stack_templates/openhands-autonomous-coder.json create mode 100644 src/ai_lsc/registry/stack_templates/openjarvis-intelligence-stack.json create mode 100644 src/ai_lsc/registry/stack_templates/privacy-first-ai-laptop.json create mode 100644 src/ai_lsc/registry/validator.py create mode 100644 src/ai_lsc/runtime/__init__.py create mode 100644 src/ai_lsc/runtime/executor.py create mode 100644 src/ai_lsc/runtime/installer.py create mode 100644 src/ai_lsc/runtime/lxc.py create mode 100644 src/ai_lsc/runtime/process.py create mode 100644 src/ai_lsc/runtime/status.py create mode 100644 src/ai_lsc/runtime/systemd.py create mode 100644 src/ai_lsc/runtime/tmux.py create mode 100644 src/ai_lsc/service/__init__.py create mode 100644 src/ai_lsc/skills/__init__.py create mode 100644 src/ai_lsc/skills/agent-orchestrator.skill.json create mode 100644 src/ai_lsc/skills/code-reviewer.skill.json create mode 100644 src/ai_lsc/skills/rag-analyst.skill.json create mode 100644 src/ai_lsc/skills/redis-operator.skill.json create mode 100644 src/ai_lsc/skills/resolver.py create mode 100644 src/ai_lsc/skills/stack-operator.skill.json create mode 100644 src/ai_lsc/skills/vector-search.skill.json create mode 100644 src/ai_lsc/stack/__init__.py create mode 100644 src/ai_lsc/stack/export.py create mode 100644 src/ai_lsc/types.py create mode 100644 src/ai_lsc/ui/__init__.py create mode 100644 src/ai_lsc/ui/dialogs/__init__.py create mode 100644 src/ai_lsc/ui/dialogs/stack_wizard.py create mode 100644 src/ai_lsc/ui/main_window.py create mode 100644 src/ai_lsc/ui/pages/__init__.py create mode 100644 src/ai_lsc/ui/pages/chatbot_console.py create mode 100644 src/ai_lsc/ui/pages/code_analysis_tab.py create mode 100644 src/ai_lsc/ui/pages/container_stacks_tab.py create mode 100644 src/ai_lsc/ui/pages/datasets_tab.py create mode 100644 src/ai_lsc/ui/pages/git_worktree_tab.py create mode 100644 src/ai_lsc/ui/pages/infrastructure_layer_page.py create mode 100644 src/ai_lsc/ui/pages/ipc_stack_tab.py create mode 100644 src/ai_lsc/ui/pages/service_row.py create mode 100644 src/ai_lsc/ui/pages/settings_page.py create mode 100644 src/ai_lsc/ui/pages/skills_console.py create mode 100644 src/ai_lsc/ui/pages/tools_tab.py create mode 100644 src/ai_lsc/ui/pages/verification_tab.py create mode 100644 src/ai_lsc/ui/protocol.py create mode 100644 src/ai_lsc/utils/__init__.py create mode 100644 src/ai_lsc/utils/filesystem.py create mode 100644 src/ai_lsc/utils/logging.py create mode 100644 src/ai_lsc/utils/ollama.py create mode 100644 src/ai_lsc/utils/paths.py create mode 100644 src/ai_lsc/utils/process.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef9cb93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +*.egg-info/ +*.egg +dist/ +build/ +.eggs/ +*.whl + +# Virtual environments +.venv/ +venv/ +env/ +ENV/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ +.project +.classpath +.settings/ + +# Testing +.pytest_cache/ +.coverage +htmlcov/ +.mypy_cache/ +.ruff_cache/ + +# Type checking +*.pyi + +# Distribution +*.tar.gz +*.tar.bz2 +*.zip + +# OS files +.DS_Store +Thumbs.db +*.log + +# Application runtime data +pipeline_state.json +pipeline.json +config.json +ai_lsc_state.json + +# Tool output +*.yaml.bak +lxc-launch.sh +*.conf.bak + +# Downloaded models (Ollama, etc.) +models/ +weights/ + +# Logs +logs/ +*.log + +# Guardrail baseline (internal, not for publishing) +.guardrail_baseline.json + +# Temporary files +tmp/ +temp/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f29c05 --- /dev/null +++ b/README.md @@ -0,0 +1,349 @@ +
+ AI-LSC Logo +
+ +

AI - Local Stack Control

+ +

+ v3.0 — Codename: Ankh of Jah
+ http://dcos.net +

+ +

+A PySide6 desktop application for orchestrating local AI/ML tool stacks across a 13-layer architecture. +

+ +AI Local Stack Control (AI-LSC) provides a unified interface to discover, configure, launch, and manage 121 tools spanning the entire AI software stack — from GPU runtimes and inference engines to agent frameworks and container deployment targets. + +![Overview](docs/screenshots/overview.png) + +## Features + +### 13-Layer Architecture + +Every tool in the registry is classified within a 13-layer taxonomy, giving you a clear mental model of your entire AI stack: + +| Layer | Name | Tools | +|-------|------|-------| +| L1 | Host Platform | PostgreSQL, MariaDB, Redis, SQLite3, DuckDB | +| L2 | Development Environment | Python, CuPy, ripgrep, fd, tree-sitter, SST | +| L3 | GPU Runtime | CUDA Toolkit, ROCm, Vulkan | +| L4 | Inference Engines | Ollama, llama.cpp, vLLM, SGlang, TGI, LMDeploy, TextGen | +| L5 | Distributed Runtime | vLLM (distributed) | +| L6 | AI Endpoints | LiteLLM Proxy, OpenRouter, TGI Endpoint, vLLM Endpoint, Ollama Endpoint, LM Studio, OpenAI Compatible, Groq | +| L7 | Data & Knowledge Pipelines | Dify, LangChain, LlamaIndex, LangGraph, Docling, Whisper, Unstructured, Haystack, Craw4AI, Firecrawl, LakeFS, DVC, nomic-embed | +| L8 | Automation & Execution | Aider, Claude Code, Codestral, Fabric, Jupyter, Streamlit, Gradio, Chainlit, Aider (Chat), Marqo, PyPDF, Docling (ETL), and more | +| L9 | Observability | Btop, Glances, Prometheus, Grafana, Loki, Jaeger, OpenTelemetry | +| L10 | Intelligent Routing | CrewAI, AutoGen, OpenBrain, Mnemosyne, Mnemo Cortex | +| L11 | User Interfaces | Open WebUI, ChatUI, InvokeAI, Forge (A1111), ComfyUI, Gradio Web, Streamlit Web | +| L12 | Containers | Terraform, Ansible, Puppet, Pulumi, Bicep, OpenTofu, AWS CDK, Crossplane, Terragrunt | +| L13 | Knowledge Management | Zotero, Calibre, Paperless-ngx, Logseq, Joplin | + +![Infrastructure Layers](docs/screenshots/infrastructure-layers.png) + +### Tool Registry + +Browse and search across 115 tools with real-time status detection, dependency tracking, and per-tool configuration. Each tool entry includes installer type, launcher specification, required dependencies, and feature flags (CLI/GUI/Web). + +![Tools Registry](docs/screenshots/tools-registry.png) + +### IPC Stack Editor + +Visually compose your tool stack using the AI-LSC Stack Editor — a drag-and-drop flow compiler. Validate dependencies, then compile the stack state to a portable JSON configuration file. + +![IPC Stack Editor](docs/screenshots/ipc-stack-editor.png) + +### Stack Templates + +Get started quickly with pre-configured stack templates: + +- **Claude Code Setup** — Full Claude Code ecosystem (11 tools: claude_code, ollama, aider, claude_mem, godmod3, awesome_claude_code, superpowers, ui_ux_pro_max, vibe_kanban, claude_squad, rcode) +- **Free Claude Code** — Minimal Claude Code setup (4 tools: claude_code, ollama, claude_mem, rcode) +- **SaaS Integrations** — Production deployment stack (12 tools including cloudflared, nginx_proxy, certbot, backup_agent) +- **Local LLM Lab** — Self-hosted LLM playground (10 tools: ollama, llamacpp, vllm, litellm, openwebui, chromadb, whisper, docling, aider, fabric) + +### Multi-Backend Container Export + +Export your compiled stack to multiple deployment targets: + +- **Podman Compose** — Rootless OCI containers via `compose.yaml` +- **Docker Compose** — Standard Docker Compose output +- **LXC Containers** — Per-container `.conf` files + `lxc-launch.sh` lifecycle script + +![Deployment Targets](docs/screenshots/deployment-targets.png) + +### Runtime Management + +Launch and manage tools via four runtime backends: + +- **systemd** — Persistent system services with `systemctl` +- **tmux** — Session-managed terminal processes +- **desktop** — One-shot CLI commands +- **lxc** — Full LXC container lifecycle (create, start, stop, freeze, attach) + +### Skills System + +Extend AI-LSC with skill modules that add specialized behaviors to your tool stack. The Skills Console provides activation toggles, behavior bindings, and runtime integration. + +![Skills Console](docs/screenshots/skills-console.png) + +### AI Chat Console + +Built-in chat interface for interacting with local LLM endpoints. Supports model selection, conversation history, and direct integration with your running stack. + +![Chat Console](docs/screenshots/chat-console.png) + +### Monitor Dashboard + +Real-time system health monitoring with CPU/memory metrics, per-service status indicators, and log aggregation across all running tools. + +![Monitor Dashboard](docs/screenshots/monitor-dashboard.png) + +### Code Analysis + +Source code analysis with syntax highlighting, complexity metrics, and dependency visualization. + +![Code Analysis](docs/screenshots/code-analysis.png) + +### Settings + +Configure base directories, model defaults, API endpoints, logging levels, and application preferences. + +![Settings](docs/screenshots/settings.png) + +## Architecture + +``` +ai_lsc/ + __init__.py # Public API re-exports + constants.py # App constants, styles, navigation order + types.py # Data classes: ToolMetadata, PipelineState, etc. + guardrails.py # Import guard for PySide6 + registry/ + __init__.py + defaults.py # Legacy 115-entry monolith registry (fallback) + loader.py # Merges per-layer files at runtime + manager.py # RegistryManager — query/filter tools + validator.py # Schema validation + layers/ # 13 per-layer tool files (108 → 115 tools) + automation.py # L8: 31 tools + containers.py # L12: 10 tools (incl. 6 new IaC tools) + data_knowledge.py # L7: 13 tools + development.py # L2: 6 tools (incl. SST) + distributed.py # L5: 1 tool + endpoints.py # L6: 10 tools + gpu.py # L3: 3 tools + host_platform.py # L1: 5 tools + inference.py # L4: 7 tools + intelligent_routing.py # L10: 5 tools + knowledge_management.py # L13: 5 tools + observability.py # L9: 7 tools + user_interfaces.py # L11: 12 tools + stack_templates/ + __init__.py + manager.py # StackTemplateManager + claude-code-setup.json # 11-tool template + free-claude-code.json # 4-tool template + saas-integrations.json # 12-tool template + local-llm-lab.json # 10-tool template + runtime/ + __init__.py + executor.py # RuntimeExecutor — dispatch to systemd/tmux/desktop/lxc + installer.py # Tool installation handlers + process.py # Process management + status.py # Service status detection + systemd.py # systemd service lifecycle + tmux.py # tmux session management + lxc.py # LXC container lifecycle + stack/ + export.py # ContainerBackend — generates compose YAML / LXC configs + ui/ + __init__.py + protocol.py # MainWindowProtocol (dependency injection) + main_window.py # AILocalStackControl — master QMainWindow + dialogs/ + __init__.py + stack_wizard.py # First-launch template selection wizard + pages/ + __init__.py + chatbot_console.py + code_analysis_tab.py + container_stacks_tab.py + datasets_tab.py + git_worktree_tab.py + infrastructure_layer_page.py + service_row.py + settings_page.py + skills_console.py + ipc_stack_tab.py + tools_tab.py + chat/ + api.py # Async chat API worker (PySide6 signals) + skills/ + resolver.py # SkillRuntimeResolver + manifest/ + support.py # Manifest generation + utils/ + filesystem.py + logging.py + paths.py + process.py +``` + +## Installation + +### Prerequisites + +- Python 3.11+ +- PySide6 (`pip install PySide6`) +- Arch Linux (pacman) or equivalent package manager + +### Quick Install + +```bash +git clone https://github.com/your-username/ai-lsc.git +cd ai-lsc +pip install -e . +``` + +See [quickstart.md](quickstart.md) for detailed setup instructions. + +### Bootstrap Script + +```bash +./bootstrap.sh +``` + +The bootstrap script installs all system dependencies (pacman packages), Python dependencies, and verifies your environment. + +## Usage + +### Launch the Application + +```bash +python -m ai_lsc +``` + +### First Launch + +On first launch, the Stack Template Wizard appears. Choose a pre-configured template (Claude Code Setup, Local LLM Lab, etc.) or start from scratch and manually select your tools. + +### Typical Workflow + +1. **Select a template** or manually pick tools from the registry +2. **Configure dependencies** — AI-LSC resolves tool dependencies automatically +3. **Compile your stack** — IPC Stack Editor validates and saves the configuration +4. **Launch services** — Tools start via systemd, tmux, or desktop launchers +5. **Monitor** — Dashboard shows real-time status across all running tools +6. **Export** — Generate Podman/Docker Compose or LXC container configs + +## Development + +### Project Structure + +The project follows a layered architecture with clear separation of concerns: + +- **registry/** — Tool definitions, loader, validator, templates +- **runtime/** — Process management, launchers, installers +- **stack/** — Container export backends +- **ui/** — PySide6 interface (guarded imports, protocol-based DI) +- **chat/** — Async chat API integration +- **skills/** — Skill runtime resolver +- **utils/** — Filesystem, logging, path helpers + +### PySide6 Guard Pattern + +All UI modules use a try/except guard: + +```python +try: + from PySide6.QtWidgets import QMainWindow + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + class MyWidget(QMainWindow): + ... + MyWidget = None +``` + +This allows the registry, runtime, and utility modules to be imported and tested without PySide6 installed. + +### Registry-Driven Dispatch + +Tool behavior is driven entirely by registry entries. No hardcoded switch statements: + +```python +LAUNCHER_DISPATCH = { + "systemd": systemd_start, + "tmux": tmux_start, + "desktop": desktop_start, + "lxc": lxc_start, +} +handler = LAUNCHER_DISPATCH[tool["launcher"]["type"]] +handler(tool) +``` + +### Adding a New Tool + +1. Identify the correct layer file in `registry/layers/` +2. Add a new entry to the `TOOLS` dict: + +```python +'my_tool': { + "name": "My Tool", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Development", + "installer": {"type": "npm", "pkg": "my-tool"}, + "launcher": {"type": "tmux", "cmd": "my-tool serve --port {port}", + "default_port": 8080}, + "deps": ["ollama"], + "description": "My awesome AI tool.", + "flags": {"has_cli": True, "has_gui": False, "has_web": True} +}, +``` + +3. Optionally add it to a stack template JSON in `registry/stack_templates/` + +### Creating a Stack Template + +```json +{ + "id": "my-template", + "name": "My Custom Stack", + "description": "A custom stack for my workflow", + "version": "1.0", + "author": "your-name", + "tags": ["custom", "development"], + "tools": ["ollama", "aider", "claude_code", "vllm"] +} +``` + +Save as `registry/stack_templates/my-template.json`. + +## Tech Stack + +| Component | Technology | +|-----------|-----------| +| UI Framework | PySide6 (Qt for Python) | +| Language | Python 3.11+ | +| Package Manager | pip / uv | +| Container Backends | Podman, Docker, LXC | +| Service Management | systemd, tmux | +| IaC Tools | Terraform, Pulumi, OpenTofu, AWS CDK, Crossplane, Bicep, Terragrunt | +| Config Format | JSON | + +## License + +MIT + +## Contributing + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/my-feature`) +3. Add tools to the appropriate layer file +4. Ensure all 13 layer files pass AST validation (`python3 -c "import ast; ..."`) +5. Submit a pull request diff --git a/ai-lsc-logo.png b/ai-lsc-logo.png new file mode 100755 index 0000000000000000000000000000000000000000..7b2df51ba2608007785bd95ff7cae9942ced1d53 GIT binary patch literal 1236348 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

fK)yjw`y1GI^Tx>ur!UDO>Uc;mK z#Uj{Cru*OTE?yig|FO2#i&L+U3!AnaVf6&0aZDOa5h%aBQKV!kV+q3N=^;=YHcY#k z)!K@Os)v)f_FtrIjizZBS?-E!#t&z&bMDG49ka7F10o<4(8qVdG7JR_IhU8r1PXDe zYOubaEHtuAxOWhuDt9mtbg+P5pExvcGSJ?SA0A|o1kux>TOg^~mxP%qR(t-=q_o}M zWD7a@n0(wJcK1I<_}&O8M-c`=O_JxnlfQb17Hs`{rft}$jbep}5!87zT+l4VP zdu>vWq3g3dUGTJ9xRqUkcqCcB;~?V@`6mK@g2HSoi{zk0F50cXLj&>7)zM*3xcu z262RmH?!h5^McDRQ$5qLDox59istn}_Uun*?|kn_iDj=$-xoAZSn+>;{Tk_Ue`0A- zcm9rzp`csT-C?EH*0M^+DPB&5eI!ds#22Ftl4Ce{w(t%#r)FZ}v2efge zid}*ye>46_K5CFerqbmD-iKh@QB?Ie%af~Dc#v3(a)CYXoKKq>emhYCruH_EHlZ)X z*~!-@0t0_dthFSEF;0-MqPqzw2MYh%oSa6BKe8Lf&@y}vLz%N zT?7+{4mUiuhnFBcMXnlb78uM(2w9=0>pwZ{n`$t`->#x$hSiHdrV#_Vz+qYA-O+zl z1RvCOq%$z3_M_(pZzs&EE4=UU>v(9N%c?E7lVH4ApZ~Txd2!p>T<+N?P-jOH=&{SE z#7HL@YoTjlpBsRR>&86ViCppIl9yyt&Vu0PLgi^J5v)b8g2NLn$1&64Z=N26zFm|< zE$Zxs5us!ZDb7H1s{~9HTHFw zZ0Z|*Z00^l_-3(aPw=s}skyGY`onW%)I z#4Djht`u7;kg=l-TW2KP`trg&%Js)L3cehA1+F$1BDMYhSG};cH;buUXi?Xn& zX68q4Z)BS9fHW?8d`CIXj2vgmVzuQMu%8xNS`>qb*y3UV`-N$l$Rq^V!emPLiz_&N zq6TUZK@Tf}I1Q4Hq2=j(@(ohOndRT@g3ouf%3bCu8L;0dGHT*h1&@VtqvBP+WPKbI zkdCrv?=jDANv zaNV#(ISql6AUc*HmUWx}Ukm*a!It}*m7BvAR`PX|>29LuWR`=9Kj!1`=2L^U zEg)SW7N{JX=u;va@zU6f!Zcrg-6fS=GHpHa`&`1uo52!)h>H`$V466@+G7NDtn^h2 zNl8ut#u=x^-=Ie7a(6oqDyM9~I!NFiozIrhtRLAqrOK+(AR&y4$S+%peuEnDoy3DS zf*qL|0aXsc1{qL>F@Z}3ZfaJ&B(-|*#%fF2rS^xNiGsD~f*B*A6Ho!|dCsI_j+k@Z zj2*6Ik%od(V{I)zahhDggiURo-TdTJ?x)pNO_Z6QI=4U|2>uFG^+DkjMgZx7s> zjVc`He{Kqod8#y2$e;*b2=Rf8 z6>de2<$Oj{4jtD4RdE6{Sem4B*$jO-2o3;aQ{{yDk*u%CGRlpD} z*5#Hp#EamKBhxJi&&8v?nd=AO+h9mMmbJw}_^)3%_h}D;+H4*B=)BzcKe? zDPb_!#WKX}usgnW6Cm%`v)z^vbG$zt6F+T}@bfS2l{ngv_-Q%jur}OG5)dvzp$kEx z6$eAkJ1LKeY-_beMe2gB&f6| z9SRhU@gFp3`dlTpZJV@0T(Dl}DFx{?Dmnz6`t{(V#o6R!%#s@bP&+nY2(_~E({C|0GEQ01BxuGtaKn56dL$+GT6j> z(^Uw9DmSzrG^8dpEz?_&2rY6dBJx0%nImPq39ciA6k0CEUu*_bS%1&e>G6)43oPQ| z+Tz^4_~Ms)A@7Jv2h}TOW=5_xJeOuf%38x+UtYkZ6|L+N}p zIT&+y>EFKRi_DY93Gfhz!(5ejMpsOq{Xl?11{+*ZwmrCVwxsp>Cq=^g$4TZ6 zZ6H7FRr9!an5E2*C9A$qZ=@N~p9M(uu)}r7y}4NQY>@_+ztQYy<6WekLMAC8@~rQp z^Rcm;`)aeorF0}xyqhlCK3e~X>!_BKPUaZNXE8O&(UlF6XHyA~FOzV-)~uf2MYdKp=1vU}#@gD%h6rio-;|nLOQW-&B zB7yXy@&;_Zy;Y|K^Z8-K3!pz9&Sd;`bpmK=5^dhd<(m07=s{Itgn0qdsL&&EK9#g; z$hciSs9O8sk+F*h7Of~8YxPwL3v#Yza7tN1QDi1NS>z{bLA?={h)Jy*Kq67e5;@8j zHP&Gx1CXt5tnC(j8hId^dZ%qHCdBurWl9f#;z-%q*#U9pz)gSeyBdqV-SlBIvbr@Q zD$UYDVC7@CE6LvhmXzY}r&}X$Pfn)x_Ga?(0@=$OOsyJLD2T(t`Y4b+dZNO@x|}J& z{w(>LnCzWJ{i3B&ZEM9;QQYYy&w!{{_=!{K>b&sa_hLIC1xh#B@rZZmL3)_@aa_!Apw{X&RgazX zHfM=`ld+^^d~_T*(WzCM$8SC&M;{Jdjq6nW#c}}G3fRw7mVL_^{Z$%SlvK>50$VG< zqJ8Kvbf2-g?IJ&HzS^R)M_^V#joSW{J#u73Rcl_-8YGF79fM{oe`s;X4kX%5n*9DN za;_$=ZUIrH!6csn!frogI;%)#Fh)Cvg}?mb_7y|EBa$FU{d(K)D23Mh)+A48+D_lx zDPYG}js;$ZaIpLBv*#*t!z)pO0>xMsW<+I_Eo?e8&%Qf{>n8}ke-8@{NIQ`$Rgn*P zX)5#t8?sOm3AM+F?c^512hbqo_1((D_!n`_QvT(Wwu|-)G5>$VrP*t**hz`Gt&37) z3HVS0w06JvUA~UVNp0OLzc91Yz;2R2OVuVEHL_~k4hFrU<)QalR{d|MyK2oxBZ!5b zo&m=PgueLgT1@)|n!j0=C4OzPgv*is;n$a)YH?msb56#2a^DB z8iISLj{?p*^mArr1|%VN{Cpi`ayd1HhCbCQdGN0-VT($!>0hq%Cn4A*RJv2ZrDRw&d1(&)T!Bl{+!!u}t2^d={E~`qs*bM00Yx(+R-t(cg|zVaWq1j^>=3Tk_h)15@+w^8=C!9<9szvU6nuMmOo&ZEKG!oSryg zLb`7uIuvT&pOejFPJ<c)h>|y0EM_A zY|J=w9$_SE#+kaUUJa*Bf%j!ZtH5X}Y@0=yrD)>U@6^sT? zk5qQm7lgyl*!;)oYZG^U zDs`S0WjdoMu_r1n>+L)Xf&K)*S+7>V!`t5r3zW^#Qz``V0Ow|@O9rh%0Wt27j=3Jd z$9Yt*T0IXy^x3T%Ho({fM!!lsRW2kbyoCQfc)^&l`QiR1Ya{kJV{BU{E+R~D$z|&N zK)-+mbz3BGW%=UbV#RF{4io9Y&Xr0jR*XYpI(;Ee9ou&0B=5%z_+_>C!o`*36Ey?W zn=GzU0_c5;OSIGxcIPi$Eus@xl;8Fo3R=pJJX;^5KI$VoAWhfN0ddVg< zdH=Yx-oQ<)wz9z|a!2eK-{x=EMTquNhT!LgUJA4h#6snQY~hl_7bbyWIkl2!tVb)h zSrgv%Ng99KcbC8rMp<1 z5NriF3X*Tg>98PNVGun+ybo#28fj=;lGxuYw^y#~R<0sr?p>?r!MxcwxOI225z7>*H*&0hivWva z^~A`>L{f$f^V5xQN;9=IY_+Rs9Mh@6ghUo%!2T|7-C^O4W2a9P$-uYL2mcGh!6}kl ze-mSKWLkH7Kx&Zm?%IPPb>1vy*o6uT=P1{!<8hgN-=Yd?+bJ79EH*F_etsKrVMN92 z?w6ew`aEJiE$uI(LfFnAd&SrM0bxsfGLtjFOf4cHL@mXt{PxXfa)g)=jVvZi(G~|+ z7~YBuxyLNy{3xpz)fdO`T1#6iQ6n!%st2rvt1Y*qX(a%i&ZtBaHV!+gV(8b_MnLFt z#*p*X{XJEc!(5rh`ue;JfABod#VN2u{z|16gVKQmmZ@ZMm^ul{>ZwXcP{0+QmqgYtxqMnQG1=wVn)kRx(Hv8Y`pBmzn!SA zSSDRSHNiBIq$7c2LwL736|GIDl4JbW9k%Jii6xzuH*tlxX_`5-cK6e!xGs~)qoNWs zF$yG8Tiqo^T%*;qvN9gVR&IQA+Af?$v|nDulR76^MA6@jn!B{!YR6_~B zV3Ge0!QsF{MZpX4%4o%kRbBSIxH@sB+S^-hbZg#hCEv;tbx&55g{c*Gc+;6~O?^{Y z@qf7crjoTVH`m}|ZSLw?J8uWn^3o-5KAGyn&!VDaRH=P{KfeZHmXNS#YYU2Ve-J_j z+U@kHK9El351eSA?^E<|f0>{mF!W^KpRrKf8jgj9#U30?B0FMp))P()FnZfS^4$ak zRuogSv*ZoWLER|ib-ELZM-G~0x7ChL&;T0S`pfbY5hye~Q_Ob@sO3S=JO}WIN!kW~%etd~ zq^ie_@K^{a?9Vd*o;!iB z3@EEohPHz-Uh(d&4$@vap+bo?FRu(7z~aQmw56hgD?9;QOW{@F6LAv&JX>sS6|!5~ zq~&#TTAbm~WQ`>Cu9-a0+8h2mKMtAW80!6Xnw++lm!}qrWuckdqsf*8wrD6O1rt9J zPl*9$34P@56am*`M;dsHqVBi8m3yuJRgWG1v~b3TE-p7#D}W`SkTi}EvaLaef@%w& z#La$#Ero2YCL>Im6dUIH`m$Sq==o>tpx^`zDOOIYy^7i=gHQ+wp+=|3@P&}|0)_q8 z_F?^ML8iNinjHT}i)XezGLAn!HWIB~PHYU9so^NGNS0F7+SDdnlxPfAFM>RP@qw50 zKZX8w+!{WWWcGcPD(FHNzRd7XSr%niIl-oO0srA2K7f4?zqdTkPC`Vv?KM$3Tm}lZ z=GpU_YgQX-v-lR7`Zx0N^L!OY%h=@e%;=M|j*{})%e>$SnpQdRUcLxyMqW)1Co8uf zZwX%DpNeM4$Iwk`4)T?(kul++__;^#{OaH7+Rlo zOaFWS`>uz}qPrN{51LofPhIR@WU#2{|NSCy8^>M&(!MQ9p zQm{REJ1Vt>9->w=R_(vai+gO;NKYzhWNzn%Dj@F9;6(qGi_|DQE zELDX=G6AvYy`1u}I0@GG@mSOVe2_NK5FD&GHA|E9`RJy2|qqV`{?uho` zNY!V5>?;aZZm@eTF`e@YpegOn0^1Lqh8$Pqm+LGzK% zlZCO*d{*-)Q#c2`qVGuJb)+|@TS!VD0K1~66C zOra{rmA2CIMvKGYGyrYIq~M>v7;Oa21|UKx77;<6^x?_a0vRKqAnG0;HzDa=z5#S< zi)uhpU`5_7Ea;UOgyn~^R0;4ip~5HSobP{MjrpBdcSc%xcu+JISADN_7kEq5=k=SABOBH;+)K&!pJb7c0u@GV=CN{;x_%8Ebm0}Ku-lE?xujP6)dG0(Uo zJZgQeDkeWn3dZ=G6_=GF)vXIxQce!Ik#9y^pI0VlDNUVL^*>4MHT2(bow0ERL~L+S zo0!o3>J8`^?f>L61+TB!jRHa|UT45(*UFsL~4c9A90}bz-%9JPaA1Pp0_v*Q-Xy zK$@jFKMA~5M48$=d;%q~%Kt{gzlvpK zDb0~~v5-325Hl{SB^T~;%D6AW9rk;KqL}WQXn>=ia7O#Bw-pq8JLfnZ_Tyz2SCQ&VO`U#ExE5BVXTE9OXk;bPl7VAj%M*86O%eP-` z%YFNsmrr&A6H2i9o!(oUgUVqAUK_bU#|ENV9L!&cfw_` zI5}QyMTTlL8k7o_T>zLxb9n;~D=06MoJI>YN=t1)9U75q!0E8uq5$?BWUcPtWCjxg z16^Gl{v)s&I=%{W&yMx6!KV@W_@|>2NUHA@!QF%RcB1?mHxbvnfPg+c7u#D((qw!A zGTzz$#A-4wnzHt@N2AN9&BcYRHmYXTL(&+ZcL<7bVBrFbbaVYxDEG z5DMAi*dczZGp7^MouraXFR*iNy6&~xuFsVA&I}s&(a}kv)=-l3k=-82m7Key z=A1@vk*k=OTvw;#9089j?0qXoYdE}fs(ab))U zU`s6A%xWekbowBE%IN|xKBJ+(jZ7P@4WH1`nUsf0(AA7QinE^CW|z5(Ob5!u7FE5 z6ujrU7U7!db=4fi?*T=|6ItiD#5P>YUP@=eD=Gl+$u|J3F3uz11qSlq@V5W(;e(CE z)?ll5)WikYX5|H|au_!OIM+)7fkUwhc-gDdafa71wChVK(9n;f=;RUg=&zGs} z=R8Se2eQ+mG`@d-=Qx~|BNL?PZ$6gYs%V?h7^y@)&x`GmJoU{I?9g$0yXG$E4#rx2 zJwC`|2bZ-}zX&71>~`4iY@rXJ)48#Q&zpx;sxJwB{P&67=b*acDJ9J_N}BAHVo@jFib{-sNb_F8NyU}yFD%NO>$yV1tg!7&QdnBFRKDSOSl)LA*v?Upfl zLhIvw*AF`A1X;nt*OAK;xxExm84 zx$Ls`dKksbZ|;8HU6uBtLLdsv%+x5@B-jM8(io^=R&W4QCkYf%Nz_7JZ<$h<9@W5X zyiU^|vs(%(hwGXgc?9I0);&Pb)9oQE5(S4hvXn{wo3bY7?UcKWBn$(rb{uI$+Fdz(+!ognJg zMPG5}6N$#3?NVsws--FhejF$Cw4CB2eGivsmkkMkc7)L>{xvY_{iFtAD0%5+i2|Fe zwY}K6>;W9L9A`*jrX_rWrRv~%U>qE&H`(`2qXY!3BwZ>txO7zkp(7?-%iv6Rm8OnLHc=2HFsz^G6YHLIw*F zV_fCFYmqnFg6Y0VYcsV`KAi4DQM0cXvW5LV6L83Ey>Hc9ocq2RFI{4wB`?R0Zq2_J z*QIDop98x?GuL$5y|ru2B2#?+{!7^Cg6Ltx#)75T&5*rhH+-Jk^jiD4-GBGu7QIR5&#K~&YoK=t!VQC_9bXg1TZ{R zb5POHyhs`9-;ih4$%u_LEb8{xC8NpNPKdUiOBs(B6oB z%d0W}iMz0U@@qTcZ%a4tek;P=7i$9}>*50x_U2?5bjt!mJjDHg*PNM_HviKckBFc0 zagioiLM?PBxZ=YL72kL| z2EY%1QkIb>9Ptw}jbWU~Z<$%;v^iM2H~L*rkB+GS(*T74(?YGScJ=%#fcXbdheQnp z4KhMN?z7SaLshRHxL2#VsHmuznEe~OM2pY8y`!M~?CWmr^Q8--`+Zlo1PKuQ{< zb4VoxN$KvClI|3cQo59o2FanM^QF5}=|=L~{`mL{UdWtt_SyScYuyW}mS4`X-fr>u z1mEB2U^W0r0(ulp>rR?8LH6>`UJVpVgn9(F^7?0YK*4xaRk!x;0bSZ8WZDrkYQRg| zde!n?IO|G!^d(jt4q}VU{~-U_ir)zBY<8wp<4mUe=IB*N6*&Q)}|$RBrb;R&ZJr9Y4qMJf*apMG!fL01QwaFV7Y?%Ar*)b~#2>p(HvZ+G z03HMw?Vu9Oe8R%4>!TuPLyCpmVq#g}tOJZj0fT0a`g-3|Jl%XrHowYYsVNwL(ckSZ z_h6wuoDP|rwQNIRr238R{eRbBaFHAT()V=pTpC~0EXJCba`fXi50H540W4VA(%H<6 zzF<5`K7WiHe9_Qoe&q$+>=z12UAnAK0NaFt2{pnp!?`CA867FIy9zxZFfb5+Of3)Q z>vU~ydxxKc@rkA3?VtB#22M8KERpioTh+C5OrP-h{+Q=zgK^1Va*Onr}<8Ee<#nSmOJzrFDzuT7Rk%Nm7AmzO^+PWTu&EW?EoX%$JX0A@N zq{U}h|2_2IK6-9Ny%TSwY3JebA-=G5R=oOUlf*5{dK5?zA75*dZDQ@LVc8jXZPwz|C_g6P-J-NyBa>}Kn$;d;ZrKL$rd zY;CE>{x*NeXmsCj&%T?ax&0O!mbdyh^m4{wp~iWsM9K1pRni}AH<>0Kj+d!E$j?nD zUc_<5t93;5qm}%?kV`OlH*@#h)h=r{@2-ENO%3_@=!5k0L~f*~p?z;xdMl5JacP5m z7myPJQ1T^%r@Wt&s7%=`U5T=SrptO4BT^8a_>g~NPoJGkP%TpNifZ|`_lrq5`HY?;;-WneIidm7-tgH@w_JC#0?t?h zC?)yl5d*h8K$_fU?1;?>e@`TD!DoyaX;d%n8fyMb*j|FfesT9+It3A2orm;1Tf{Y^^qKDzDvC!hwE8Pr|MaNI-! z(Ey=te;qH%%r=z3C6o1XWE63?CGK@lH}lh`V+B{E&l8Oiesoh7VTliMb>*oCR=Lof zY;gfz-dUS&XPge^KJxT$x_cHiU+5LoNSvAJU=l-3?~e`^7pWmuWqTJ*5!7NI8z%Nr zN|WE^H-hNAcfLi;Z#SWd?-o*czusnhkA#)!LA%I8xme_Vf{7*twW9OElZl!*x;?Ci zNd5fc`}c3knLdYcvbL4##a>7GeKUJX5K3z5*3*H~`Gd=@uC8T-Pq2#{a3G`_co(~N zzsC&>uFTy#omme=UV7U zqW~8W`?g%>1nU9tqi1y$u+)Hyxq0ajT<@kOheY~1-2-4=)!lmsgx?u2K#7=irp|!Z zz#J#j|ADc9S^E0y+*{P5{1w$sw*SNItX0`N5CM_O`7BC7x_p}BT1PE+N^FLnj{g(vM|iVIVwhdfFsmKTr%91 zU7a%UOQxD)K9MCMY6e+|dhupT?P>&;07?{gh&5&aRvjfFh(oHLSMq3U|7o@SfSY}Z zM1L0{Cf9qil?tk3Hv7Tn3PycEz*H=ox8s+SlPjHKfi;O;jt+_x%Dtg_DxS7~TgGS% zwV3|;<3jf{WAeB6Wp(P?AZC655J5FlHmD~}7*9sT4icmNufzQtz|#FRuCCiCU$;WT zHn~LYX$I+suMrrS+RR%t*wKvYDAuohb~{eMxXWW}R&g+6hd=H)Xc#0ITN`6V>c`WLG z_b_@lNM^CK%>rIdR<)Il?#ouHOuBSDwxRGudNt!Srl>THKLRBrW(iq{8QL9MKO0_oWH0ipt{|E`l1RAoW)V`lrmauR@l$-;`{_G}T9&`?>;@{_h2dKIrBx z{ub+vNcG9*OE_D`R+aB!O;&v5!fn4Y&bz#tx_z+Z6IW4&v?2!4uo5KKh#F*IPt{aA zy-9j3HbeOmT!W+vNPQR!-I6M=0((bs6cQoKgmypwWGa8BmO~gE#R(q@c%7P+PJK;F z!;lRDw>Wuz5=#_P8nk`e>+83&chM*=U<_ypmO{Jwg=TgE@xIfi{^|Hr{+0fcT>^2e zWltV_tNDqS-i5kK8Q7ecE{zi&w>pYMeboj`iFRskO$Yzx#$Z<&E1R#uLMlTS z1ZqzlsC(=E@9|*v>jLZyY9xX3NlCvH7e?!mAV$wVifig)JYT=azDccb*_y$waMO_d ztUXB3a{WFc?Ob0d2B1$&ue*0xL5$1|;E z>Ps9U(HC(PM*XgzBOsvr*m3@zG?YX{)41QNjVa2Y;(L-*S+a{{C*dNFWGTIZa#jZZ z){lrquboW5+04kyd=KErnp*EQOEn^y2H#>RbCgTuh}0)5hMp~Y*MDsM(zxXCFRrOu z$1->Z9-X&vFsx1=-Ug7B-3&dz(ft}rH4z%ht0Y~kU%!9~oMVw21-iIO5p~l(Z5G2{ zRi$LqCario?}?>;AZhz;_9cAz-Pj3;AohNKe$3;_AG5;Kd9(*KN~R3zZDXpYx4o3% zU};4?0>1@n|XM1SW78I~V?`I5g;Ieh&PNj2^?`Amv7-__dQC| z`Ol{#J!N5L(2$%o{Ww>>pX-E##>V=mf1$<}u!|5RKmI)#wc5)Vp6MSt!HSJ}5;ALC zwK9a$rR{JnMM9z+Z}`Py(ac`@)$gOvSYa4xffO;n!yCiWQuitzZ}EM1r9sR2vJbsc zymGy8t;zXCh5vgsGuo_x&-Ac@*O-uJ*!_Iof_#|Y_l@r39NPEskotefoLxp`1Cp!tu)^eE| zAU(~-KIHM_35_srj%vPo5v^L3?+CvzuOH~$z8kX?*;ua`SuB}9z#b9a87iX^zpMw= zx!?)Lz)r~ur}{$x6I$<^b+T>H;mfO@OfJ#2)r?Yv6=T4d39$pVT>jpE=k<5NI5tB* z_Vw_D!ZG(SY2&46NsKXVGa}?y8lFd>Qe($IvDoWoI_OyFq%$eN<$-Xbv6`+~lr>pw z&F=62xbg!Il%BMArF>#yeqb>6ngdbWWM=LQ(D<=buUHB@l~c@h3e}x;O6t%$&Hp=5 z`|!ihvi~(gZY8~K$pKw|?z=UHDK6FK;^HDeWCP-{PsK)B26kBDpoLfm75)B|VsTzy zhO5uzKIYE=s8DPkQ;3)Sa?` zwg2Psbp1V}dfsQOXqF6toj25&w<4oo-jlqonY!8S6>D-B-ql+^KO;q@W}7V|pd*B^ z>+xhRqs1dhpyI9Sq#m?fUis~mwcXh!+q~ou`JKq+ob_FqUeN|$jQ2N!LsK_mw~Y9N zmYTw*o{W{j^`Nfpidg&xDZgEqfP?*7nAPlv*-n7AGX@3w>DBrmHtanYG^fQ;$)qFgAS^s8qh+wQR^*!VCWi?K+RDw;R$+~Ah zmndWF|!mwaVtC|5X>%+&c%Mvgs0lF^N~lt8APQGAyYAO3jxvK# z)}a!txFP!p4BN86t&@&Qxf;xel!<_Fbhc$LIDIUR0k!aD!nhPw!iiIHbFBo!V+O<;#!%*_5X0?-j+ll+`S-d&Nq+Dtv$K=}DI)5)w8jEi40deFWY8unJ>gAhUnk;t;HEj&=Q!XUp*nU880+XQS&DWN+ic^SCogg z+-p7dlBSCK0ya(;uqHx6VCcj_v3Odh_*LC#a16idpxrP*+;QJoD#E7YhQ?7;b^_NVT5r_j}PC ziJ{@oVr4 zI`v?stxdm}sZh4}o!wIFzgMxJpIE(&8VT#WA4QWkpX$xIktL{mOW&1Y&9z@Gc^E!( zhSS56=?6!=!Op0hsg{dLUE=wB*ZM`l`bY<75di(aRu^6YgIOu5wFkOn$ zArT>=uX?tKQVo^@KITy0ab$90$rV>6ZgzrN^y|`34+nZHm+3jL)rv=~uq^i8lYCii zFvG}as-E@^++OW_y#IA|*B$=IctuOX+3)w~iJ$b+D880pCsrVYq@C6Orn|zsTjk}5 z5|vWI__S_ezIrj1)p`MzReUWcOX0dal}xm&>)yLh_xCFXSNY+!NNa! zCNeti*4Txgnxnyj3X5k3fqUz(-bWL>Q@UEEQ|iUM+}!HmsFdz+VuA!=Z{DvKh>Om% z;-y?Gli36{W&e2AGG9B1h>j3P7v5f3r3?&THLx^tu7T}F2=E?P zT2cfxdVoCs?<1Wii2?qlclm@Ec1AIct3lZR!YgDgtEgIrz84c&m$g%S)1VC9Lij$` zuoyVoX=Sw2GEoymM!~u7SL4O6D^kWLLrSxAgIBc*#M_cIk)KCtz1_dqh^G3Pl-OrO*jL4L9EGvvY)6Rb5@Wm!)~bO*~- zqSY0xVWD{#EgnF6p01nzsr?P1`{=#;_#Z_(ju7NbLD!ed00JD3? z%fq;JuBhd(t^)Yg#hzJf79ixWhHnT!T*`i_*6WO-lrSVm9E}hU)4~XPINMwgQB^49 z<1TqU6{MztR6Q(nrQUVUxoR!7E3soLHwCVEcQ0mma?MM8}u@NBsB@OQlnylr#( zr9~ypfXb5Ot4tqfI?iwRdU~67GAq6D{5RQs|FbrqsabiVKmkb-0;=Bv9ODAxKP$fy zB%^(}rxP`)n2^03YL|`lBs|KvSk_HvrMGppb+sQj=Xf{mbI`NhCdmd$Ap3nH#?D!cNYTdAm<=AK1S3{3^a%KZRr%HLMKeUcrqwP zkC{}azf+1T;Kv0vkL#3;ru6}~R>iB}3iGeu@Rg{SPLmF#tP*GEVNtOjLqkioroMC- zWgXi!*=HH(c%n|gd{w*i4GIdvO{}aSvzn!vw)PwcUCtt)P$>e~95JcCgBfGU2dQ2z zz1Q$ziwVK+gXT_gsfVx3HC8NInG)$Ko<0==ji6t@(b4a1o@>o7LvPyV&)tZbO7*Qk< zXf&<6BLR^==LMFD2!>VOahGL%D7eI{Fsf4>zje*aq~ zRk2X@>*uipgWJw%4)3wo28)MvI{)dt!&nynZ@`M}v|MsRNq9XdGoigI4t+W%o+0VGrgnBKw?WeS8?EF zbT>P>mHNJEW4{LNPx7m_L(Nyq*HixYxB`!RRbaIf+x!r00|G`24EEKQ8BXs{4BxvV%ilm(Rmo@zJ=;1%N%TMwZfU| z#b)c{cPAUU{*}{uw!w14=R*p%_H_n(7eZ|a|#&w7*UdlBj0Ct*+C`KRwPyF9U17B5WLGRV3n-E@8aK z7nqYwZX`kXj&+JTOr1RyTBKWUB_lyDZ&+0K1T%xeNMXVaR11S)&Jxfipe^t&zypkh zu#f7MO@lNfAhM>F?$6cifCc`oVy2M$9}rRovuJ9)Mp$h^54i?im}DrI6zwXdY0UUC zAWS>0LK6Pfp#$|5Iin(}>0(-MRA}!9;245pH%QTx%@D{SHvkJsboPUrW7)X3r>Ccx z+2(GSbh6?W2x4E+2voY?PQwPJ*d?w0BAun{#BeP)lCsJQ{hn8zr=X!(sQ#6=5%9W`$exL?4=r329hI@b( z(*Evl<@_-W9+aI$(6pUAo%?LMXBKvQc@gnRpwpEwD(%>Z5RYyS23rnC^6>TsllasU zO(Q(EhHxnV-E=Z_6hw{Idw67o2=E&1C;!mh!4eSN;;TTo=&GXuH2$_{GL> z&5;RC$GzW`@$mcGkK-$ec@?b*RTx>kmw?F;%)&-GO;XHLL?N4AYc0w80$p&^~EnOI5Ks#&0U$fFi93hfQ2JccJX^=>o#Tg(UaLK^-CFVIBr7`an0C;3bEH|$_wZ)tiC1H^ z-u4;WcNLTZWYshZH4^Kx5DcH6+S(bVIn2KWS`sZ)g|H0xmwixZ%jmV6Se*DHZ2OyY z24PSMQgaP@V1TrLQy9*FfO%+0g1TXU+MHtwUim7 zqOd}&X*zl@*%}Bp^?SD=tMse4jvmni9#E!`mzRcj%!L*Yh}%F;uwwK-ye5Rnd&Pfe3h75qdp zwzhEq8fQ{XiF+%&rnl%_<|a7&27Z?LU*_U-xcT;>2z+o^OF>*^R9U}OFC)xCqP6(I z#;7>3#mzQ1EvmCBItRIvc(V1#^|pWj8So&ws^|*4D`I;*@4#q%99)TevQt2AQ zR8VW^a*Btn1Q%J_HTC+9GyC|wm6_1%Qn9!}ePlvICP6?>aZ5+G=nVh0nYvP@R*L^U2e7{1@dHZ-bzxPH8an>x|=RY2v{ez=85 zte(x>EvAb-B;XtP^?P9$+2^Jb%oQ4LR%-yShTA(`sI-GU^_Q`Z?cT?m=QAy<45(yG z8C{WAVhwp)GEut=(f+Eh{KYz|8^nHdQXtF4o**lo4d7*8SI1NuSpA)@WPT&5^pyIEK zm|Fx#ki(^BGP0dWt0Pel73%Csd2k#?7&wATYTHrm35WV-YZZbP*LxeyVv)g&dg}x| z+hh|9pz76gSu8cV19k0dRu-TaM8fQ21f5M>EVfB_92Xm^)S1Bm7XW|-oJ~%n4X^cU z<`#e2>lNxEcJrbw#9UdlBNjb3V$tyyL9r*-&3ZJ)J1hwO(0wEj7#bGIYrp|4nYA~D zt5BWj(%rTOn?vL=jH;Eo+P`ctxB|cwvTS2c)+G`kMSY$pYgg>;mn1iKQ23s{1coGi zR30`*(<(Rt&Uqa9p;aVd4of2pP~o&LGKx}Ceb-D$r{;?%&eO4Sxe=8SS1eI{*jSUL zeCb;#HOCJiY0}>Aw3?bwG}rn zR^$nv5LP}REF;tC2?yn;kefI?i9q|fs9LN|R__?s)8MKK$rT6kw7H!_55HTFf07Y@ z`t)r>QUSl|WrhE*(K@tr>jd4OvbnC)E<2B2cQ)jYz>rrL#Q@*J{QRM51-%hy@T$6jF z^R_pfP~(%Im3W$%kSD_SW0*1w@W~KJPJlMK!gIB4_;VYX5z?mYthtH@(O}Zbq0FI& zZuE!KU;bxfzwn=;7BDfVD)Nz1tn^0oA(PrA=n(3p+e%5S=w+<5SRcGLyu8WwxhO4B z(6N<3G2=urd>Bs+dM=eBG_DqK8KztI{k^By1#YNF9;|?Xq6=c!yb;ICLC?Yi%c+hd zl_p7@x6W1datw}@>C-}okfy##f=BMTZ_B85J=w?jZ#$b-luc&TnPz6oIe84oYswS%vgzb)gT`nI??Gf z)Kl_w|MsS!Z?RzN>)cYj$3)i1j!2Y^s=!|TXo;ar$Ntu zW?l{r`t8es;=@OKnm5YS_kV`#lUQEnn|^{16zJrV(#c3&l2&*vxj(xfq_NDVkWov+ zyjtnzv7U5h)@Ljvfw012Lm&xZ_Ij^ck9_^FqqH7Bsg@-o|&(Oz1p#Ky$l&D}oi z|Jl)puB(OoXNwZW2XXT`ppR?e=<<@vkG&ZuYxA6W?*R(mxb}l2NT`T+S9MYVvJXk( z`$YelNSYs`!oT(V-$bh~;W2QTYW)|U1G^uP+wDuFS4gC% z;OSs_s`vXvU0<=r?+eUE9~gO(2ogn z3XwlVkM7PaceX7pERwk48o=GM<Q zMQsHIh=+v(-6MyFwJ_F-7MGvSqjgIrkd4@ zQ6wYKF@QBO3I8=w{*kw^2tq~g<~eFHJ}l@Q7415f>69pQvu%G3!4x_q0iS8z`y_VO zIEshMi#pb&_I=^K9Y@Qir9tan5Vpkv_K;l+(WTmtTB3YfsWExVE(=7UcVPxR#K@I( z)s&bp;bH{Y`-M<3w{@W+(q^|8J4vN1eIZi9#B+gdquaLte?}d8JJ85*J5O-)fY9Va zvMQ4y&FvA0Y{ENguvIA&tF+(ahZ-46!C=rzHr?kCfy><2n75f^1W!~21O+d$u3C>w zXWomq{U`Z(QupO3eaL(lEOEyxjf^xD8;kKV|NmY9gAbIkjBfnz5jN)sZ70)OZGQ@x z2#`+C$IJbDXRbbpdv?LiZ4q(#oG*sFm$2EF)n3YB$v}}P(3nJ6Wu8btT7mU|tHy)9 zeELVQ$Z&*=?fZ%p`vI908>2lJLbV)-z<5s$=+!9W((VH8fXqTX3UU;JjUv0~tZC=s zs23LVGmjfPPep|O0t;cYe(A#|Fe~r0dHx!%U*6VXdS`eupcO9nE{|K0*#ZNphF;-V zq37QM^lWhh^Qz*0S`?D8jK(H6{2Zy|!4JD#(fTOUb5Atf2@bnl0d@N~NbI5qsVr{a-wjzoNC!jj!)jDiS`x)SO) zx@^rxk*}C4Grq3A~7wc>3A*BeZKP94s4w+?%xd!y?HVGuEGG}V&`5q zhN2EPqsf<&G9!SU@AJ{|=#8S|iy66*{546uC;vHV|e?_5d~VfRv~`Z zk?r|ctITtnG_`)g-twyxteV;nWE#1Saq z2xgT5JE}(49l*2)$-GS0U%!5VcLA`jN|*+C&G1OY$PY zT&KAvZOfXO864p=1h~M38~E5igOM^M5yX4ka+Wp!n+*gM5JL`bZf+CXxUhA^y>fOh z6aTWskdXu*Wh?+(7;qp50AH3C3+aoNH%q@i{cQV1nRLRXAQ{-|ZuIzoe03<70vnCx z8WDU`V~_>1zy@C}bhc-yOwrKM`*&9xjNu6oBy#n&3+a_MjZPK_ISqv^AG$)RSSgkf zbL&;)dvW1RgOn#cuGp5@zK39`grg*#Scesn6U;q_#Wz`wW-T~0zhq}9>g!5i)GXHM zq&WOAuaFq8YV~k*`%WG*W zjbm~HsYleV(5Rd~*PX?e^^2$FS1rxUcAW9==BtLwmd=yxM<3V7+?t|g5@giqI}5Z~ z%}D}0VMtXYqzPdOxlk#lC@E%DmeZkSA6g>bry+_r$9TOAc&Ojy^uW9 z)$2kao(yK<@|1GU=q^t_9X5J!exJL^YxwQ>SzQ$l&d{LFEd_$j-fDwthqxjkH(fc7*gG@oK;`)+{Z}IHZatcY?DWt9u-AHUv zY*9px*oFP`L5TN_F5Tky6W`zAq_%9iz;Te+ItF-P*QcotD5}oI7MZkpS8?*y04%zr zZ;Zi&;m>spVY~yI zcHdV^2h_>*qNt(>f&gG3ndqeqdA2pS`<5na^5`M;!Qd0Y7t!LjhjKi>$*qHQ_r~=f zuA!iC3J&x9fwo$8SBXR>$VBq%XYY_u)T}qRY=-Ly=0(*jdmJBp2ps`SgBQDN2%H|? zgJL1I`=q5oVpvO&xeQSU9l_jd=8r;v%5AL(A2|Gofo&xs?a5E|VhAOK*1n|@LdT58 zn6o;918(|4rFX|?hS!ODSBu2SdT$1z1=0z39zn;{MzZ*QVnD-YR$X54=L53G*}+5c zkG$o0oD}L~Cg0z)FocP?%)igjX|~xsD!=Wz;bV16`^-ZCMM80Gj-O`jh>qlikcaL#dY!*7`TQOAXKefHjDMXSG^vAOHyT^Fo2I~g^`T_F+tqvAJXpD1azy#8Ha@dIm> zvv$SMA>qip27D|Q(mu`^L;rhV`1oR(^>@fpjAxMBblow-?Zi|na1f(tctgMfja26G zvYUfO$c-tA2;w9j>;C@Cd!%w|v;@s_GYrOOKT$ zkvUL)74h@SoY%A7lik@UU<#@aLkpG^hFBFi{Y_FoTiC#`yUc^jIG+uE^bA0^aLO9AX1}W%yqU!(#Vxy0Gqw+Gt*kT(71Y66X<$??Iwsy z%9mi8Eo_^~%AhblqbL2$d#AOI7lJYVT)9<5*5p1h?2w9sL4A!pkNnMFGhty7!7aEC z2mPuyVr;rSu4c4E(-uM>@Ge9Z8Vw^2Lx!xjxZ=F{rhI=#wes;->?_&A5>gheKRAGy zltBMu$hhhN|Eo5M&CgJe?oeS5eUBx>)X&FE)j^d7@#qcf1J6XAcIiG(%6#e6IZ~ooX&>SK zb=ta`F(LE^8!?N1wCYg5wD%!FFbF9lc0Eyjfb>aV0#CLFZbLN3yjOoWS!|iE*VO~E z|HE2a^&4k(x|n>X6Iy^7a(w7E{MakJ+z~J+ftjTY^*+6JbSeTB?*}UUkWb=acl>B5 z9l;XHx3--RhFK3PLGtn_DCFBnY}e$DmHV1k5zu{~XY=yJ*+2cDG$*$YFC(nSkH`4yJ%#{!Y2=SfQ8$iRs4T_r%Z| zw$}sZ_Ays^NhVMzlpamZip@s~i?C?zj67CL?8?jVZXEaR#P>G^8A_y0SBTrkhjWz{ zPBc#FGTkIZfw}cmP|I%(J3Bq=OK}owsH;L{@0eNUD_st@4-R+rRQ|hPcT!(-5wYzE zU%IA436T@X;pBuQ3F>eOq+{^1zut788CDv-TRVDusAxNgt;!{rOo(^-k%agDGdBc- zNikvY%zR50M1mC=z@y&*8xu4=A4oQ3)ry;<#QiYB5!%OY7_rrr;kQyp@)j#XaZiE- z+wbF`D1yLs3^NT_*a47pt(hzYVX#jtkx@Zo5=xpq3D7ML(!F4UuH zXGV1HiHO}jX0p2lHoAUvIbHR=qWH%)0heNeceq;ORHx2nN`~xxEihNdrt`mJNp>ki zdrha)Fj*9hk?1!og+mxmfEjPpkJXKR9vl2?R5bVaQ^Y&0$TuWVQ0HLm^sUbF3EYy# zT1m|ecD5?LVfjPv>IZ8UA19~L0E5wowfawqM|cJ!#TEH}`K?DukwI?btIwPNz9prz#f+50jTOUgK#_vB&{B@m#n=;U6eY00l zG5u#+kVdYtKI?w8^-nUH;c2bGys5E030=y%KxC367Yb$I`$PNXA1PWm_)wovx+rDp zX!jAJCvZ|N83r|VVZn*kgE-N%gKnPbGCnNQNKcNTkX;HFM^swn7})SgxGkx}X}nJj zZ|vW11)*}*cFHSE)_-ln#MRZSi{`)3WQ&ZAlo8mduV$((mLv^S#gVX>!Jlm+-!nW# zg=SpQ<&|rcKU}}|`}pC5-_@`ok8?p1A*}?G@yq>F4b0m-`H82MpOSj~Mk}CZ02Hg| z_;+4&6w#y}hogpZNtEM*PyILFqs{O)QOT_LyRS)|umih=rW3N2Ya8NAQaBn~*Q(-L z=G|X(ai_ZV=3mAADmoA&i&yqk3K-4+dx`M%Zi1`|{V z9Ut+xW(#SxF_9cZg!&g_vUM+jN0v)bI;T-h4;^W8CntWdW&%~Gu$new`k30|YTK{ZT8 z=4T})nDcZZh@IcP7$HBgA|+?hVO_+1P!oE`GJeVcj0A;@x*l>_iL#cfA`HkW8w~}8 z*YDScl!v%`86>DYFPw=y0~CvgcIalLm{FmS2L}~DE9~21h1^R)+%bIEY-=6~f$G{u znCONz>!^QVa762Aa>d8v;Ac1%`p%6>+d3Shz+5$63Rd~hOITij#Pn<1I!Y*U9wU7~ z*DkMzbAeV29x+zUS?lAXj^&xi3wy=nCI%&vE0@Nr_WP%KOv)ByLb1un89V2XHCM}O zDVjT(yJVMQJBu2PZ#6BgRFQFcBk1E5kVptpP!r7=23_JOJhSZjbx*&Zh|Fbe@m*ev zj@G>V&UY#Q^u=%ul41mHd>`*itDN79N;?`;$qoWL`-rxq`>La|at8?{Hm|IGvC=1{ zH|l%KKI;#yN2vsnZ~j}&@K{eAve0?A&8|fBnUU*x;+Lrwc*E&y=RkwGi{cP|Q2-&W zVH>x32}zMrUYDbctr|mpvN+TQRQfDjJXEd9G6?-RU(Y)@gNdr7>e0D}-%fpr@4f%^ z%EL30XnKR3#BZ&A(l2)Cy(VI3%%|pe#2>vB-x4x#FJr^5aB)O$WVi6HW5 zItkO9%P`w=zx}H4$LmiI$6r}F>L8d%MFD373Gv!V$av?k*qe6OIsE>PjHAn_OIYj$ zSyq==MPBXCSGn(rF^{otPwA_c zg*leB<1oLCoih%rqd1vUXi}T&eAC&MUd`%U&@Bxx{~cS^qYaOk`k3+G3k4J6y^PQ0 zoXRoAZ~|PrBK1VmePSV9x)%Il z4AqD}34F)MRQ;rOvD3ciV0sLu5tm{A@e2kaYmfcz);01NeeG@({UGMZuId@_v{K|gOk;hVif#BmW8 z69XwBhs3AFGMLV4gFi(^>e<`)7=@aUw2UkAISd5HtPQ`%!TeT+769hvlCr*osA14G z2_hkM@wfujQB)(>C$pg&X9dD^hiVN?#Rh~jzjgcnIsP{|D6JkUpF_$l&ZM8+{MR83 zwo>S2O5ZFkldSu9cYFQsO|fVx=Ve~poH0fg1G-LNSF}gRR*|t;rN3v6xaW%wJx0y` zGgt(pLZSr)<=%fNt4lt34oi)_1)4{Lxw)+!flUoTs`4GTkZQU)Z1g&ze` zRyUQ%hHsn21@L8$&>F51UlD@JnDK$u=e_uGDrt&S#Ze)XUt1NuFHftY=vbEt0T>X&)%Tf zv4BnhHGEzCZ=|8#PtPib90*L3A}vxvjX`NhQ_J84WO`Cx>ZzA%GeS^<<7u@~kWDaB z;^GV%9F~0i?k+u+A4X=%-tS2Ze7u%#UgGZQN}ktcEfHf6&*A5@W^k>_=6S*^;e>TYS_rM9o6l|z{y#bsRnsyr6DFY3yDti!JZU$JunPd0!QB8iV??m{=kEaxTu35 zT?C5+QbznkX0uOZC?XZGR;4Sa6=!Z4QkGoC6G@$C;%M}KI)HjSAX&XH{Cc6Q>gkMp zENUkNt@*(%A|k@gU2W1m0K_UYBPXVt)?P;pQEn<8-&D-=QoQddb<;#=K?w7qT38QxA6zE0&6eo4rnok!~qNL`h=kL-8W3ez>k2q2v#Ctl;{?LiL@kx`>GEpIxFntpSZi{6HCv-{2Q zadYQk7o3`pK<_FQrHwXn$1lK`1X-u+4SZ3Qu4!EuqlKChYuyR)XT!hqGb?w~dL^+v z*ywThGvar|{Cvu#Njf&%~5UoN@=Sr*WfEuHaO=i(!x+t)J&BU>9K5P)997PZFI|`BruQy zWU>~z=IPbotMJI|m1@lZm5ekKTg`T#Hm9}DPj`1<8zuXjdOV~1FIW=ZAUjzI`-Xb` z%_c*fb2GXTm0Iqr`>Qq2`o$3ZYE;BXh)9cgu77NT3!w{=Iwn$72{1P}oNaynnnlI{ z?-QGL^QC)&bO}nA zgfxFTB_*Z9Aq43TLAs>76cMCby1TpK9`9Y3PcCaQ%)IA3vG;Gw%0x&8LTG;f)+xKo ze36feAwwdC@I_A3Ar2e+$|{jV36D7+jkV%TBsF4p)u(Q(n| zslI$}3B-OPRUsk=!n#SNA;AjJXNi)qz!aI_Dkeh|(22vB@6U#+l&%&YKHDbcu$Ba& z;}Kif^irp9)xS^8NNZo|p+b;E`43q!Bw!VZ_cuN?sijdV12y&p- zB+<#1u*vr;CF01Y(G+n-w6VzQ$g3RPxvWKatu2Xr}Ww&+^ND{D4?kOAeir(D0TX}5{Y z8g}IH6Osn2k&l=mVx<&xayqLS7JIt4lr;Em5=fh4I`(17e=<5L-?f`u%$<%>dbUk1 z*dq*0i^0>5Bs>L8MiV8khe9d{HBk;D2`0G)<0G-u5w?r^FP%hx6NLsB53ydaynL=6 z1+Bc57Zfq|A9bUUpULpt+v-Zvz=N1&eAOL$b778&@At3`>yAE7Y%@^JS2<=soz2oO zKgFfH-|@=Q6Pw}`(|B4oZ)LSeoP@_r@9|q|OEPJAUPaFxHLfVX9IT(y%||Sf`%;jU z3ZqxX3?w#gR(Vm^>bYWK`aO-2I{&J|4TX8?_8COC7y4YumdV9)dGxcF?i5*Fu9)lS z%@&(}HB8zD%^)_pUB)#1n@zsyXI!atO;;x12yfoY@}XKd?p`tb&C#(Mp;yO2idkb3 z)Px!lAm?T&xn1%y0T-4K@KKkRhMKyDSh>2E;CZ$UWr{6fK+o(1DT~PGC>;*c-AXm| zpjWSKccQ$Eiqggd0Vb$?8;qGfYe)o&HQVczY7aT~2( zHFvHld)TsL`$j?A-Q|1lTNcY;Is3A=-{ljP-R(_JUw|RlLHgopZ;?tT7xy z6CZc2;(A)&Fn^!t*fjd1FMOi4Ckf$8O7l;82s8l3MpJC!b316QC&->6)?J=E|8fU*|=KXz5Jdz3c1Iy=W*RQ&_g8t&1PyJnbGt89)?HjU0eLy^7by2?5EY_ zLQ6}Dhu{9S)+cZplUGro$w=csmzpX@`bGQ;AH4`K4$*HvuVZ4z?Qt3B=^MA;DxsF( z>!~eq%@V97O#f3W{~3vir|_5uo~w6IJVY|OA(q!i*N1&6BGPBi^#jC0^awRIwYv5c zvsoT0LVI6O47N9F{xF*6Kgwo$nk67V`F}0ICVlXF_SKGSqg0Yb?=x97WZXP+3l3zx zj7WtrV8@xX)g=%^pD$iQ?Gj41Ae?4RozYXYk0uv=NAT-!+$dO|^12RGVAH@>a7<}M zvJZ1h{^Ka{q0Azhqnv;a0+QyY+s~8X3|IL$5<5fPton4Omp=kmzV=8y^+-m=Bx7zfVWDT1XH(6+3Dn3`PuIW8>m-Yy zM)V#V&5_d`XVD&m?!pMvR|uMHuhI%+AgfxfI75kEc}5hwrG-hPlM2wG#QbX$ymYNQ zh%PQ+xw6Kao%kg$+me|-WvOYx&WF1jTWyE?L;L1Ek`d0YVMs4!CWS_GY*VAwEz}(* zbSib*+;+xf6^RJ>*BJ^LWJuahZ9$~sKX@g&Z&xjY;_znP-BMD>n?;Y2Tk35iq5oN zJXyriEDf&L-{xOTco5tjs|EKtwM@T%2xVGY zVHm<_Qx0jAJX{R{^ba3zJ02GA{8q&}&J{acu17}O10SdM-SS4&WMHrjw*HS_Z1ap` z|18rzW_-uRs=&lFkEciU;6^P-KNvq~M#`2)6c2`ENJ0FZcrz4{dsr(Efy=M1W&Sba<<9Lsx|&a;-4A2p-sxjynfBpH}suezZ7-iZ80I9R50!W zCOtdJ#PNyb&^jXLXboB>)RVKVYV=&WZgaM;veXEgQku+$&>%VBI6k>*y+V2uO=)EY z7gDY4R#r3sNkh_keur|pG=jz%dQ9#Iq~ z=o%ATIxW*IxFLG^=WRf;Qg)_Ci0Xx)gwR}82huR5)Ra95l^X&rJEhnyxOGaVt8C%fprfDb$B*|Vr4@Sh zwia$ZG_+{8ekP?ueRQJ!l|Gc*IVRplRFKYqD1rk|NdnE{H$aaTF~|Jr z-{?;UVH6*hzD~bu|AYVLEU>zf`0vkcW?{y*)q<0jEwQJk=PuEHB6!lZQW!M%pPr7X z+Aqo-C-<-{*9gUEQ_qQ?7CNX58XFB0RQNn@c!x!Ownw^ZhV{x9ZJ>iYeH8ivID93M z#B5wq#VfXHU#*?Q`&nsi?F)L1o(rijZ`JR6-WMwarHQQ1W!Z*VazzK^l})EEqH%46 zyS{8`A{#fkvH2DIg(@c?-*#oO z13qG9Nem>ghgTmETTuaghbE@U^1 z@8ig_JWT-v(f7hOUxP;4^zg=TSCJpG>{?ai5SMTn-+J9Gjtn`aRVw5zxA4QErj;T; z@0}5I{iGu{n|-9nYxSMCV?ttvq%~zkG-gnAn6l01@VI5MmD5XPO|;kS(8DsCAC>nv zr}JuecrYq<>+uf^!10=GbY26xAb^(w%Cgog`Lx&0KklFLKdxq`<9FbhYLtuLosa*6 z?}07jq>eFG37lEX9cvYb$f4&35`2zHmlsy2^TPF|S4n?5&s5K87;7W**a<>EoA^rhN<^lyHuLfBq>(}ocP&v?;s^4anJ@#v|YJ8T9~ zz0fT*`Re0x@Lpx3sc8Z5oi@QN)5?7gZ+d!zzD`$mG{!NIy%crcA{O_5h-v+=FBb(f zjR$AK4!Hy`2Qg2HKm`Z2aaPqt92 z+_(G}^amOIA`d^|zz8 zVCK1MA(mHpU6&7H2L9UnnPz28xV%&i8^{&?TV7!zju=p=`O47DrT(>+FH9w_7@rB` zj(!Cn40quJmBN~jH!d>UZo&d9)-%|K;gkc(i!5JO5(H_g;oQM5qP^7!BY42D!tdnk zC(1oC5{M)|6#*Bus;ZP*0Z}ceP zX^_U7P5rF->+||@{gT9iCY}(Jnr;#9sS@g%raQ8$vUlyfKhCC2l5q$FnvEpqLrFIE zg)aP#(Enrb_UoBerCVvO#zWr3oj;MqnXe%0X-%>hM;tlp&PumhiyR5j(S>B5{wcj=hLzlKu|@zs=c7+_A-2YuTP)pm$w9cKPfbRv8yM#!)7$#3)+f;i zA|F@GMh;|&jce^^s&mG)kUlXFeCKSRJ$Lh8NfuvoEjRPH=ESS{o8bzS5>hWNnj;b{ zQW;se@jvYC!I37J>oo_$M*HncDj{*2C2|j2TN91s#$`5SJNGrO#tqeUeR*-M{!yo&p7F` zt+u-`Jndb4K4CmPN0D+#d8O;Qvl7yf7MZ}qW60MqULb0;ugwKBkIZg{P2151rzow6x zBg0`;ddetV$ma2+X0Oy}@r;AKPi~m}A9Rd8E_uFKi>&yhl)ug^puN;I~O?E<&34*3!6^-}RHQMF3f2P|b26XF4TVcP`iDmfZHK_lT z5Sn2^h-4{Kk(5qGnFj77JFX-DJEcp#7JVRX# zdf9NCEF1f+n6nL@qa2a-N)-2laOOXnn!SA#CO$4+20>Q)bw4Z+9wIq_MmD{(ztjPc ztq&J^vNE@Kci|&K$ptI{o=0Z<$Ez25T5S-zU)9WhC%ueL*zoOoAZ&f=`qXwcAYaJb zs|{-+(5bvcs8i5+Y>DyPzwW-~e7aZNL@^KhLoF88{(7o%$ZVmT4vsDZLr%#_>#};< zfCGmMD8AZ(+vjPp&wM=B@%L@)I7v!hfke+d4%Kryag9#1Bd?zq0v;ivjAG{g6H>k@28Zc+!q6CqPFX$$@8 z=(Ieh$O&fM1B9VrutC)=yl&OIZb7c-Uu_W|FG`Ksg>L|Zcv!EdK*UAobE5UVSu9nV zVoOObv#gd4XL^}PhUK$Sl65XIF<%f*1a@C4%F2MIo4UCV>}Vi4#Zm!p?7hiuKS3E2 zKhjxDU%$B1XQ^E4-3V!~EQ~*Y|B|?SArLg9${VUvuYM#O)N!#~Tl_^4g``KjNgoJf zWMl-V;0;JUB7Bi-?9_##eg&Co*0ytT8Pfx$_uP&ffb^Ev)wSP(l^rlpxFyPV1AP#n z>sIoQpD%8CwST-hMZq9~_X2HoJbh|b7Dxh780Wk6Gn_XWqPd#P;Pl)%=}J)35oEuT=!+9LX@v7;Kra;lChFx=x2M`n$e2=lHVct&Wsd$# zFiMG`yr#9&RYTE~e=$iAG%BchLPKlMonEk?FsR~FKU1%(&_ik_!>{O&XQcI?4nav5 zj1|g+7Aw!Ym(Xi|5IyJNW?FqPi#?kq9Ap~BoDx!hu&7V;81~ZOIfM^xB_Jc!hK~1N z?GFqE8}>+k_W`E9vsS%QXn-s%AlrLM1dtHKuUE2(DrEx^uowun92#8J2gfvJ`L5ev zU!3-H9NaS485j|A^}Gp!A`_b9Bma>m;ARf8X5s|M!%SD*q{+R{3cubds^qxEaXtUB z%z&KC_?o_mv{IZ~fWP4FEtUT?1=1_9s@#cLFL#fl$Lm%!skcdD3AoCQxCrceo#*WI zgwfR^7#kh~_ik%9?~7~lIa4C-{NLRfr`p5MNS+u|BjFcCakl`>YRXVtIaw_s z<+TYrfaMr}tNMGRo;d>KtVn}v*_A$|$l;zNul_wMo;38w07x;!qDhb~94!KldDbE8 zU_r@RdA#RJ-gpzsi%RK)PJXw#$j5D{mdHOm+VEBZB=Oo^`>6t%PnKL zu?%?Bp%rFVSLGxA#r#ScOz_xhOjiV0NzFL#P}AoA{`K`Wpuz$HRMytwoo%^*sHlBZ zYG&3+eoYT;ETm^@A85C&FW&_iO1y-U|7 zzW4)7gpAr+eWDX(;PP?svxAwLe_lB;?^?Eg2E`;c9XqUUhkv&3{N&+c6b2;D@_QH?E#L|-BE|J4E1(zFPz&FBs_xl=|u!>!4I#*$x@wZ z+d6AcLf?F&S6bXpW4q!=u{r5^h_21VkdZ^J`=9Jaq8nL9kFQn(7|{jVPd7OIH+lWv zR$ie&ST`-g84Z1hniO>^>^DPE%lK>$M6ZS}VlWN8HWF3EE{{ixPdqyIE^!{ZeGF3d zFKBZ^EOfD>Fn?jt^=W8^Ybw}T*N@+BE*N)g6zqX@d68kL zx5RAZz}r)Pg>{aDwGr{@w<>vR#!y$if|xL`el?o4eO!s{ire1dLh(i^r@t>dHv&X0 zD4wq>_XoFY@ONYg0@@GcBCzpWHOD|R;D0HgUSQ3{W@yLGCfU=us>H)+jK2Xt zvu#w|glK~>IF6>;9}(0bBl?Jl4&?yZabg@uT@uB z>G;4v94M{3J{mzOkIUueAh}8SG;79z$dIUjxvdT#SbM)isc7(%1he&_zTpB3^KoMM z(V)cj+K;8~ti+txnw3Z04P&1}8kla^~@YQ}h}%keuQ%Xu0#xaZ}W_AT6@` z$=65-ZWZ5y-?H3E924QL5Nu^nUy4^A%zHeoyC?PgOQP$v8f*8>KofBU5n7(#xE2Kkz0+tt!Rs-oSe14&J$H(uH}9us z8TDRAQhb*>Hfh3J!fz?I$hj1CS(&*b14>8*&X(2_v&V&cI+T^5{{iMm`b$SjDk`R2 z5CaI7?ewMJWC%26|D|Aq`)Z^%r4K8oNNif{d;_EO)TgV4F^Au;DZTYUnPyJ~3l3kr) z^WpB&_cT7++%oOTvsck>{g9uT>ySD({#%Nlw;L+EICLfo znsaX?ht0s0_?)o6o3d8puKMCnH=GA^;P?`@z^!Zxd~MvOy;C}2pgS-$q@tW@U2i#? zslw~%ema(1(pF@ok%BK4N=>U)Y-L%10@mTw@mJ!?Z_Shz4+V9=UeR1vnhk@PLlpQ= zflG7D!m9j)v3$bLtA*KDy;3LLNRdJ3nWf4LmUk^)(^)FIttZvfS2{d+CYu`SiC;_; z&;=p%)MTNZtgG#v5=3!_13(SrRlqBdkt6QDKl(fS`rP>b z%2m74`{@pZO=n-9pdd}E(1cq+PI4m>=ovlPGfB)smK_=vMTK}DUUZxu5wjVjw9GT= zz6_yfjzh3qPf#uybMHz=R-g*<0OmN|q|DTZ>=`3%B&UM2yLMvFLWbM{b{FoD606UW zRi2CjLpSuwk}V%ZX_S?s{O`IPkN#HCU4JQHp_cm?_v<)(FQtE|vtG?TE+(7(INW)&76tRGmq){D&{PqHa$GAO^bOj-t8!;kyNxQw9o zO^U*$p`krmm>;Msttr!FzO67%^~NcIc5+|qbc-Zgvf$@+Pp39F>r30I(I8teRujp< zxE(z}Ol^C$8wL>@@-AMTR$|^6CL&o9v)yY<+Ah>xBXt5XFVhSz8W$YgIOsMc$o8H> zhU}u}@86UwKX=Qi>hQpB;F7GEDv>i!ITKYKuf1C~c?P!?FQBIhkdv($h&8~5=;reP zq*3uCf_iRsUH`{Cn2ape^PKmXL2yLsniFvnGw>diE0-x}oXM1-)7nNIG^w|_%>~1` zH^f6=K5LiuXQ9B^y&n5Uz;Uq^#54o;4yDMy3Zj}BMjfX`JH-t!A)uibKEk08{%1S@ z0W)dv-W2A5(YH;y+>c6T&rl@44SB51d1L)0@8w0khN*w~Qjp5IaOp57-{+$mHkH*N zP_B*JGGquP$p1SeG|I(9#}e^z4e;tf_Al&ydmE4TeDUIoXx$Wb&|c=lyBGhWJIS&? z@@P0`xB^e7VU>%;Kq=!U?8nf7$m~IV9iTQUGh=7K`{P7;YvEjQCbV(Lkyf0F(oVPm{t=el=09Mxj(aNu+Lz~9fJ9#eQ50BOA>%61_v;a6K zE<@Gp3Es8#HqLKTt%vijYUJ^8&t7#xLq==`^vj8I>em{SnCV$bRVMyzek>bhWM5DxMs-UHBV8{HFvN)He+z|B>71D{^^Iv^=QCg5US9j zg6ro5HzZtU=r|nA3(nzjWH~L$7?dtu9-gB!A6ydlL%} z>5P{#|0+mi>wmmFl6Wa3bTiX&8$S_%NMM8?30WqbK((9kafHXyOYuQEW$eEn?^4hc z4NG`TE-TS_VB-uTy; zT*Tep7JRLCcXoE(UJ$bz*P*w9k;2y1{>;Bm>R5~}Qs4El8ttsDX6F1>PQ%bYBE z@cmg;{C!FzF5oIg^t2bybuwKmeHQji-@cKtcVJTrXC4~$Ary+tqSxRx&FBR_rW-9A zHlDa{MAL+ZxT;-WfCt}5ZhstlFn-@K*Fz!;x>fETJh0PN}@E5`@S zXuxxJ^m*EdjC~8CGv&Qfx1vOERH|9&o5UXgbwlZYe{y+l-?G5b&l93XAe%P|m-M<1 zgQsjY!7~6}6=1LT_V!9A_kf1ly-qLj{neyOH32Tevm5R~iZj`L5`|VrZGS0g7R{bJIm-KKk{krjW%Z2f z593_bdQ|%y3WL!gbN6&p&}<4aHeR*g{VT&P6VbUFPNV-L`$81W(X?Ok!f^XG?)eXh zI1T-)cbmkS9*1{F*HvHj{(NOK$Ra_{$Hx_b!#NVlq{CXUV`(6gZAqUoapH(pkyG`& zbdT&{PU?-?Eiww#dcG#s-CiH$@^L<4li$uuJdTeKixVRQ;m4E&7d$LEhP`dSS}~d3 zP*_xO#AZ2U z(jrE)xR)_kFrQU#uX`1~1?m!UAt51gaq+nfahL7oQM2DxRt8yA5>Ct4UtfKiHNNXP ztr>o9=yjQP#!-eHbIJbrVlE<=fVKF{?7JJ|)~83ud|e9@&p=uqb>j%`Fy+-?yt&+Sd%P`l^;-FoPK;ze zY^u!bnC#mFPX7bDjysW#n#a|%R-{nL0foODAJa$)snuZjsvS3Es*blqo9uI>!9Tr> zTuA?Z3n2IZf@YRwfmw>|S+_$DIzCr|9A4!`oW|{JI$Q{Z%}`9TwHjF5O7h5ka7Rpuekk$L*)lL6QG}N zZx`P(&`la@!Xgtmzq-P~#F71Q8W;dMw=y;`m(?0}Z^mp<*m1I)ujUlsP1*LY>j=LMaRi(Fis|Kw#@)AkMmr z@xOZ6&~dhqIb_dJIyf|Ne?s-pg}UUE?oB-|E4qf%EP|fw^znYX=QCN`)v722#H9l$ zMC#5?^#TZ49S1D2NcT^v<;oGcDH$36g6S(-Pyc{vjNld*a{BDD7_X|bvKY9o0bJFl zPER+9#x#x|a5DfO!?9sbMzdJc{b=^$z|mh{=1+C&J)nK-`WJf~2BK05x^1he6HLB- zh`UGzX>BEOmdo8f9Ue!E0K9W`b=9C({*S@?uGJcRxz{t$>hjl3X;cOrrtZ4+;Tk4I z%Y8e9;C6rE-&_`>dtI6JR~inj!Nt{(E1mRi^8;*eE%rY=!>(MfGlOBK@~E`nX!KhR zXA;g-iAw=#ZD4fxZw|C~!HkVPgajNl#(?n%G}ItOnCsR9pip~z`@1@QyH{V5Q@=$h$5k_z z)eVS>h}@Ms`hrPyb(S{V8n}c2Jra{fNlA&oi?Z(!w=-Pq48)t>5^xh+tri_NkpKQ@lnpjqb{)crNI~m=|^=e240xxK2`U;h>(d=o6pz9@_)D z=(E-KtW3K!gi#O`IzW!n^$D9I!cZF=+m4hXXV>q0QanBM?IMAlbHc81GtG{=7p(GB z#K(MOA?F$HTc-g;Z0{f?731Nwt9;7oH8mIQ?R9q3B_&n$Z0Hwpmb%A&plCg@1pG;M zJ@)i`XAM|-w&*Y}cYn1`|7ip%S*oK}{=(Dfo(Y(X>?vNp>X7^8%F{vJFOtdDPq5tJ zf7d`r9k3~@A|GV_HobN2a?T;G3D)bx9LZNB4w0LAukx9l)bl69OU#M4$6lpE`W769 z=~(ajCv7e9>F}TlDSUE#La;5scTJ)D%+CB@ns&yg*75(+Qx%Yeo*M{8*r#Xe#%mSE zMEl>^UD+?zyB>HEze~sDeD~dcLs#X;;eyCZ2k*-+M+v9(<3O`d*kL~+k%&l0LoE8A zaWpQs?m4!ul(|lwV}Yj^>o=-dtKOgLC}K?aH-rmI{c3m+o=*WvNm1d!IA%(teN0R} z4euAc0cTkJWW5Io6(<>Gf9`%i*3gIYVe=vJD?{mUi}k~X4!d4`tM0XQ-CJSvw@_#y zs;W|l(|RL=9o+XhL1*BRqvm&wnKrOVdTQDWmUuj5pbKWE3CfotsNo|tDcGR&I{s># z7Jh|UL;{6MMYP`3H?*cAz$B?5Umyu8QTZDGT|M??-==2!-0oPhUWnHh!-C>47+^^0 z)ol2T8uEDKJ8mE@`A|W|Ew@}HR+Ba0{P-u?d%r!0r)jGDWRE335o*SeT$3^u14uwO z59FNRw&SX$v!E7ZehHqS$KV?=g?%Wj8@( z0s2RASQ9t~hK2Sr-hh7TW-Gf=yA&*1|B)>g@247IxJA)1F@OedrWE)0+ByXTk|xZ3 zG7=o4q^i2)^fR4R_cJ^k3nFVIm9Q$Sdb{Y4D_LftjxYiXqJ77x^(=5DaNX7aDb@IP z!x*G=9+u&7*4pTK7n@K15K1>M&waZ`)_4_&x^&l-eP7yfefIS+0wmTl37iH&iG zh7}hH^X2h^m)oE@{GOw;HBYyk;t%at{@;as_xFML$QFclS+*wbZ6;{qf1?o-Es@Xa@ z9fy&#4HQRM(+J z@Mn)%TQ`YjzkiHShb#zhN!rm$_XP02Qhl{%u;nF5Db;rTGh$24r50*p|6Ev(B{+fi z{y$za44PJJPu`U)b%NL{4TU{EGbQLo+Z(4S?lom6CG^+eQ;O8tMugkx&%K8nJ3oc&yrG?CN4w>~s zKAc(_tlFoVWI;t~BxbaSdjcL zi@rYH*U`Km9~~OP67`*IGA#_`(UO+CQ%{mRb}tG){f^iusS;oBx3daWo6-yH{073_ z8=yw$o0D0mB_J=Lw zr)E{ZTMk0vaB?XExmP6Z(#X%%V51E3F1S91^BhEwr^`8>1QV#_00IIXwqz&CmRt`P zfyn`QLgVPCb_4lKL8{$$Ce*xIZTsLr3?$O!kcR|{v!NzzdbN8T86CAX2>h#N0C)`S zbiq|o_0HhkJE$3gAJrX zGzDkRPs2tm-VA9th*A^(5wdbMj@bAuaZ5}=L6LobZiq6~(=;|E=n!3$oiHNVojEd7G9wymNG96?FhgMbB-vWL8DqyoJs`frc&avhs-1 z-OjC6!;~`UxhNG0FB$uJivML+{yP_s9zgpKaEPoR9FiW?NZ$7+zZLUAfe@p~n$H|@ z*zxpOV>RsV;el!|CM4uF{IY{vNa(qwmXA-1`xNO*5E3jZO8)!g#}8=&S&ctL+XG49 zC&wO<`=X*z+DUfEo1Q?FFE~8_4<@9#ckzbOYkfbJS3V9In!>LE5p>y#kts6d_Ufe*BN(98zLv=X*6AteX61ww{&{k`m41Ij}P6k}f2@x{X7zcq3HCRT!D|#jB zY|dUwahv8h$2KUMWJ6(<91bTTzo=5+2;+wBRl7iP6T+A0@y3bab zAWxsfpo^7~(HIEpls@}a{}SvnT;CY&WrWMwO;1nz++i4h>k~p`{Nnmd8|iuN#FA0- z$7wA*`GC@`4+zn`wJOA>vN?+35rP38a$h|Na&Qhxz#(;WyO0gi-=niddBwSLS%%tV zQE`JS-0zFG7SDeWi$0AhlSPI$YL^PdqZN=;%g9p4h3c7s@LKR@c89+Ol@b{xWmbB6 z>9pOD5Iqh#0WmG!FZ%G@B8?JvcQ=o#OKeQcGExIza37!2-r2SO?b0_v#Q5gZtw_J) zxUcJ~(m}r~M(2oFt`f}AnVk99~3r}Lw*bwsPv2UcUqUvUD>q=2kZ+}S6 zy!#nSAE5d3hsJG*&eQzNO1L140%0)qR>l_|H1#Zv5E$39Z=Z)W4B6;)+i;2FW`BJA zB3@{7D73}H8X@tio74l`6Cso3eD{?Ty8y*!QLnI^kdZ88MD7A)Bx)@f)qUp^ zgi-uV)p%K{$Jtb@nE7%M550$(MH`z!=r%XGeIMWd;v{qKrB&)yMq!f~v}%1l-9ZJK z2tfb?2|DU!X!Jn8@vSKYXSr@LR1LcP9F0bA)L?3c&mk%*>fc&mFpa;f_8Y*X=oTa> z#C_}Nc$y`9f2_M1wF0CQ$mQ-nK6ju*l$MeFYCuUrIosf9Y@*hB9Lk9q(5FZCjt_vg zq`3P?Fa%h@uV#4Un@6qZ{q7E&6Uc?#w%7aOS;HfL@o=?*$$ZQ0t>0#1rKsESGQN*H zapW(y{t{qwoaF~05CFXkbH*GJau`T;0q*RB$!hse@$C`;_@uUQO=OEheC z^bM8a=n}DZC2_~~uOkK^KaA#3MhqQ0PO)_1acvl zb@1;tGTx}y`aRq-M|gXC2faDy;6iX33e61CE&`H8tE~#M3Y_=By-fr^Higzi<>N*K z9S0?ol9Ezj%Nc_;CX2t5pI(US``Q34)`pi6GXanS2paTDl`E&DTcjpv$N-jg!Oqwi z9&LR?Ln%GlgcnQx1rdqelwnWZI#v{S^48bi{;PkB+4?yaJZ)5sv#Y$e&lOqb=H>uC zlHj*jQr&>NbYPdza5dYotC?@nRW9=?W`^sEVdk4BVoU^U-L82yl5faIG%}xPXjVZ2 zU|Ioqn$rawScxKOqiaI-4A?-6^dkSq+>jmrP*asQ%LVX0h~BKn1DpB+P{>ofCYM;W z@fmr^FP8jQ75b^GslX|N_x0kmZRFFzLPz@Ma|~>(9`AH{!j5~wO131$4^|Yq2-_J5 zjs$rwx$gE&wXidL8!4;LL92@-M+QwAN_J=R^vHtMj0vHQ_C*SmfhnWwu`KzWcbYy# zXu3sHF2dgX*IjhKBNDN-w~K7tt%tjS%3xUKvvK>)Sf-A#D~O)Jx$pC#YCIAV82<7m zA6{sq&DxbzzUSEHH4QA&wYC=7gBpQ3joSyiS;l2CF-n**nIb;!_nlp4OwrjwA9g29 z7lbf+Aha^vy*cR?okC9UL1ul$4mklfexP#>9t`)jdTn*3$9T^LSgO1qZ=Q@_%X1xn zJ2h)cZs;|$nGO(s=I8Uo?cP^cl-{N;6|p-#?K^$EsuXR9Npn;0XEkj021F-a9nd=Q zoaJT28+el7YU$bfa}C&NB++}a&$1(D{m;-h^XTf2VOJPRb&(``q=R5nNK zco`kH+d*ux%S#^4h)&Ke?;!U+B?u$yG$X{I z`2vBJdxXH+k6ZPz5r3vO&5S(%oT#U#_XAPf<>>*zzOJDGM3NZ3j_q?jC!j1ySTzXa zv}2F0nBJ4un6I--9&#o8rKg|2Iui35VikBY;^%MK!XXpIjoF%GDfd+pc`OJ`u@gb! z`f&-BL;Nhpn1DxHVFN+V%LTbj``L#s1Q`|;O2IeBfrI-Q z;4x%IMsit(2qt49)H;*Kl6X?x$B|R>oOZ=gX1d~t9tXfo_v#&B=0-9!a$S0MryqY+ zFMQ<=V+!ZZLa<#RhSQQY4J`dtZu;ue$PYsYAg1sk?SoeyHxCbOe(lu% z&0)#jH%ci8@$tExZ>!UE1KBaSRe16>tr_m$6?`LRe9if`aNa)$7GPBwn&y4FED#2N z0#U}hfCZ(kPWx@3d__ag%(3aDXHdU^?-Vm3O4I%`hYYTsEvFX8LSq4Qs3LLKHEmZdWS5uE{s?;$Tl0DDP=4#^)qZX1fC6YG?q523|F&Sl&|3uUia&ZNUC)n7sVQL z#}oH&f2)A{KG!VSp@ntTY1%N`XaDYM%91Hk0|vOg|olymHuZfOsbiNMHV$@ov;u{eojl?$il+H($c?f?YA>G3xOiqmQ=z~ zW2fkFG7)hS(H79#7FrQo5!-%N;+(1uz4^+NO@8|)`H-DyWL#ahDc8#6m%`D*E&o}v zW6OS=?Rmw^juk8aTNJAMze@)a0tH>OJFZKQg~JsF9XGq_?+++QG&K-X=kNmce*MI+Rrh_(u0To0gq2f?I zPAvIfwk-K{>c7gspvlPd&cl6!{@kMHei4jf5|bTgYMt4MxBIwz=&fW_sP%%TALfT2 z4Tc?FXG42GZ4J1dslP5 zyA6R1K8owEK)`wpD?{or(H(s5DY7E%Sg_??G`*|A>Xao)KI;#M19EtN0-1oryz_>Z zDBgMo3=yS9n>empFOwcO;A%1KmxxN-US&tSW<^-bS6kt2I+!3LW2ZVVMe&CeC;|kH z!L?K943fo9C5cH7t#94JTvlDYYw5gUlJM23ny{=>SD<;7C*Ru}8;QO#6Plm>6l(lf z`gCzJ_r6J8?(k!y6cQKak`O*IM?q&-`h4CS$-X93RT(|2Dh26UQ69*t4V~|H>?f;& zLXM7o4U+*I3hy@gI6iiY@F;E$Wd!PIv+n}qO;H5+qS0o>2_7m?XMoTv{vVpoI@m}Nz}R;5~>C?`c45x|b1VXm3kHpysd zX<_*bJOq*+og>nbjM=uf@{iujEVmOju-U+2^Fe#T-8s^%(rCF0!k{gU)Tj{8rZzK} zNfk{bzgbISVxj;aU)1aKa?w&ri*F`sdPqlG6GZD^!e_h4LC-j_J{Qx`Dj`K@nJM?< zu~=o7lMb%&E7P%H<%JTD1qw^hCMd4sH$-=9)+1y*<>lp}SdwoptN7D3!;2Z$i6BC< zvTeo{uU@?pU)at|(qgUS{XZ?h3iVeIQ`)*Gd-mkX6CCGU{Wu>G=c%p^lxqqh*XIX+ z_S)Ha$a9e|_wEBVk;mf0s#oO(1RKF#UIzyQObQ^MYc10mTtK$caiE&25J zCfFTGOA1T8cK?ORRU+lkXC2_=v`#QSC4o7>0kv}qYo({^Xsq~-k?CdOCSD99= zwlXp>jQVsGwS?Y$y9Y$jbWBXdJIppC0I~RKg3IvdqcaT1nzwYBT%_FPKw@!wOI5By=Dn@^+Sb($0RD<=JZpZ$8t3eJ?D{P4J2fVsKU>$iC znGoIT`%=v-2EvY6dZbTkRvON>(w>&aj%oc^g)xSV4F{?3>H6MFJ1XO;Y??;X-`QK6 z(lbWsl*W^oVi{oz(9*uhs&O-Ks5aN!y+gGoOkS!l#`ThND(Ww(0V_Yxjx4AY6kFD*^?G9V3>8M^sHaE2%d1T^^5Ir?BbfN&Bp?9*{ZNaM!f`P3cQX>Ek5i zBu8JJK9u%dKSuCZ7*%eVE-W1VJ-bCj28Ha0CtZ&Y9vc+W-(#5fx%{0%XX%Mfq;t39 z@kY=Uh#HuC?hj(eJvN;CA~8OOhef5x5`a?~352Vy+2x6yS|U~9yye9c*`rg{iCgJL z?!>)}EZMK}<#a_sQc0&EcT0dR(%-7r)`VU?x6rSAi0da7TpJX2o?q zC4q&p9H05#TyMX)OX<2O=IQr*~bFl zB)RSBv!I?8!R`|*#>}n;!h3wTs-ZHA!L9aa#@cK*n(L||QEo79>Pg1I#p!4<`Gla> zGVonr&CW;Ui$_)rLBBn?VBuR8Sn@(kdqVOBN~|7huH}Bn$>B~X7;9bMdbK?x!)m=c z7>L0VC7Qz~mFJU~P=d_?BY_XurLpVnEQq*;LF8DJA)YEkda~3XvO^aOZk;?l?z+3J z9Kejl90VS_xw-XO3mfvSqyH&I%GYzO#uP@5L0IpHUZVU=@@~I7JT!9O^Ax~*(B1;q zQbe!~MH!o#22PoUoY*kk>@$pYb*4OHogfWs(DcTlWKY%hd^=*205SK%nGZjLX*UH_ zvZ7rdBa6)m`-z#(d*)ZOl$g{f?eDR0C@1C;CbmA2M#DuP(0Jkz=nbvvf3t-jpw3>O zg~yEBcdw58a;+pqYnMM&N`f1wrX|wLSo;izFZ$nr)lD^EgSCb=R5huYu|&N}4AyGj z4%6T!8F$J{Y0>wB;X(3UANw|gNI@%nn4U^98jv^>@uY0DANNO#n$jfU|#-NK79Yg6yqoNrH2Udg%FV>%XAdID#uSJXB7`3d*FxmO;D zJohFNkn|#j0!(gjekr|BgP3P}IJ0I*m4_oe?SiQ9^g4?5kE_F7i)R}AY#8J8Gva~r#y?JXF=-=BPt z2tQMKjMqIb<&rCZzRF^g^Ae?E5M#a96GY7*FA0c@AYTc-a5nyFW#zq74s!d1J@&s`tji?0qKVE88RfT1(uzqU;cx@bI%2Dj4FVDWsDr zf|T(hiD9^UV4AQZl_H{K`=pImaIrJs$j;3TkgvA3w&GU&-QDj)fPyStzd!5t_BONg zxa8&Aqmk+#Nn1e*!#WdpWe@PfO1lNg>7hWNW>(P=LqIkEzHaT_c#%T)#kD;#WM|RQ zai8r>63-hyEZl}3^7rg+X@StkC%st$<1a&eQ3QIoPcW!eo4^p}Z<#u>5y-OqN0ON6 z^mMf;ph1YuJTcLF2o?*)OO$Cr*oJA>#^6`GX~Lnb&>5spbw&oQ9(z^Y{p5H&)t%=7 z{FXuI-v`>9PK(B z&Pz|^n?n3nGXL2m|Mjk05(MF>GY0zGw+m4CHgcG?5LLF@TAhFs7-uGsyyTSeU3-ed zv-hH(bQ$Sr=<>3%axBe-`l)TGt;jXFIUGKw@jUoa+V;lI(!ZIg>cm4&F7 zn3#-=jPS!IuqAJBP_KutKTDnzU#C1{l$*5V|K-4`wf6o)i`!gl;nB+8)k)IrNhy=8 z(5A2ZxV-P!!bxD@%|Agtu$ZV9^NV@GA*Yp@C7M%-$&8gWpQ8Q_jtTR`F|r7_*tR^& z84JGEif*R(Av{d0Y3S)niR^Xa|@%uw82Clv(V2;NQ>awZ*?b%&9W>6628 zO&qUKXH2(X25~%B@CF+b5I!H6MGHIZ+^cy5iq?}0j*61FA(;xDj5S1H3YU-!^<(oa zjMo$QHBJ}yxO@Ip^H&(o?qOw{7|Iq&^3YjBiTZgZv^1$VBU&2r;ymzo@BOWr^ zS?QDLvnd}X4WG%;!XJm{k(!&j^yoQ08ABlM-@7N=Ukoo!Gc{8oSAtsS8n|Zg4?jWh zHj~8q_&y+x+XAv7u=@TfqdYEm6iF$ayaT2YaA9rFv`Kp!bg-3`)gG#2bRpK7o9#gw zOrr6dGOfi@C0kKT^Q%~J_Y8ff{_^S-_Mcl7RV^(oDv{?H1E2H738IyFy?J5TQLv?Q zyB_YZWrF?SB@jeK`%R-zjPtpPpx~WF@&kC=CK#?1aRL2nRaI427ZZug5#h6E&-nAF z^W}rUqG?V>CPEV{nQcW|3Wux2yvccOX$z_{f3vaTWU8B5uWX5;V=d+L{HdL zN&;+dy9}o)aUoE}zux)nCje<16c||9WO=h?)P(G_*3+CF1aVm)mj-hpfCZFMLBY+c+n)a+*KuHa#=Oao5G79t-teD{B45IiGnFU7TdR-JKnG z>KbgwO2>$FbaceM-SUnY>0dr(2scED2C9WUUX>>$x1l$0vL5}S1)A%fosGwF(+Qcc z!6CkN;_K?Vvy)xugI1%;z|!6I?M~?L&Z zH%wQ5#^R_k^rqXcFSn~HspVv|kQq;7c}Zr%zv+G8W502OjEh!xvh=e-f&j8 z2glC{80JF#iCYmSgbPn!JDCr2n%L6~lp79oDK;==oA{pijEH z4`XThRJns|uS#_3Mw9^JN+4iyWVwBY6}2RPJFY}WEu>?w@HT7Ufk^>W>TB4=R4zUn z=02ho?0PGvL53uF#xISkshOD6VQ^8%Wl#7`={rPYOAD@{ZmW4S@(Ds)R~t@65ba%3 zFQgEn6PG#>d+jPpZ)AsJqBA=8V$QJ8o_Q2q#P|t2=Hpp>KClAXy$`^g|%OH^j zLnx7mzNe+@Y{?9DyZ!241;b6@nED8FkutOH(X%N?{-YQzKM=#Ju7djJ-D)b38Na3v z`q8^M3XSrwFTeL!)U>`F>*UlepjBf0H9{IjB3;FgK~PxvWD$@C$3|{%%@)tU1-g@Q z%PIP=XWUr{aqH{ry+0%-%4Snmf#XAJ0|bgIXIx^~zt+xyu&-oq3T@Lg{ZSP&?j~d{ z+&p}cnrxu1!QIQt3+N)tOY>RqlflhyBOWXw#J07?P zOBOr|h=M5zK>$2Yued?&2)7EeW=`6p3cJXz@BvgYzZ7M*|Iqe+vQNJ2{w=X+oZJN73Uty5b&z@z5?L9UUQygRVjc?FOm+>>%2LL+4mqEw z3Pfv6fuP2-fc$riLg-*ngG4JqsR_9hg1P>pKT~{mbXO@(b0%1nK104;UCBVh&lq!j z_^G14FssCDEa&3NbXv7L?M3qWD+lbM?H%@j+ex!Lc-w7^Lf^Y88m7Ik*u#nOz^>Jt zQYp$sx-z;aHP?sH8qVau1a)yMH~6-h@!`+hAE*})umhndP_uPXBszCr&P%i785Dt& z9z`YEIlLBM@MVPsxsH(Ub$boL_d z91I2|`qMR|)jmz+Xlru!Ui`P)MWJ@9stkC>T6e!qOtCHAp0+?gKILlMH3;8r7-3TO z55#j1GZ`Ju*r0g>Q%QT->r)uOWi4ci9j4!!TjKO}BLeauYx*tjpEcSV4!#Sc`9bWI z3E~qkfh@*u;=Aj;s9Vg9o*-Q~n0AF;<=yFgiGpOu!B4wQ9;uE6p?s>Ql@1?kI7}j( zUoLdVrQgU~jsEx%HFTsxfZ<7$d%%;J+kk}%T72QgOKDS!oTE3vLXZ@4jH!x=O1=v8 zjZ2r&Dyq$zc2FxtQy~}?gzK|tX{gri*M|V|rLk7(@Ip8AWP|whbt9GcznS}uT?d(# zS6__U8%=oxMn;3;;i}4|fK1&`&~~+3GdBADnw6Ze*6k06tlx_cXVp-0)sF<_&FW+D zz0kuUGG*lkA3_snc?>A&OZWDZZtP6GRMXNlj9Kyvq5FxCUG5Q$e<uL!ko=acC5vN!caw`z1{oV2eqv1b-(Rs)V4-T*_vI{~P))Hv zYo3g4EbQUsUt+f|YeLNAIKjmLmRL4js}4++y~ttnG@3sP3pam>L(fYsPia?G5MHk9 z@4)=Q^=uat_r67&Pn)7*w>=+DAjA;vg--mpc!2_ecBDrS*1a;29StScJFohssm!tD zjkmXMsYWOS+^N7!K*cPche|P>b1c)YiK;SXEJPC56LmLk(1V%l5u0ZT56@%zUiW~E z3ZYvO>qE5iikV7vB7@)T0q5taC3vh*--o-8UhzcLBBKIvA}#cntVz5Ok#}#-@uFb&2ZQz^unBDR$fI#YA$!RAu=qHc9gK@Y&jz-+>GXqKKAWp+2V0 z6%`=QUYCaHJE=~Yq{^bdTBT@Ciai%r@bGJZmza_?yq@(`b4h@MGnCuIt=kz%U1H#8 zX_?9nH23&Kt}gtZyO|a7rFpq3R5?%aS>RrUMR+H=Q{O^b-SK}eiRpmr;m@25hMnqT zn#0oGKR`Vo>V2Oo`St_lbES_iI^E14|60MK;3+=*rPmqp93%lY5h2V!%+KZ2drUto zkABB^L>d>6&&y&!E)R^1059-h20#jVadDTWUXwcmhMuSr-m=0TzsYeF*3!^=4vF!$ zLAmeFIE#&To$=1rma~hCsHtfGSJ*!b3(3V`pF!nu(*dvckncDwSOj_knaWMgpww>O zbpj;WFHXXV7s!rSnF1 zUM<|cvA3^&Dlo*AZDwrX)q~k_+f-u`prL^N$lAmHd~QzAqUB32msw4TQ;z*Tb}SY> zf_M4U&v>3}i|==4rF~h8YoQSuW~cc;D%?*kwVtBG|BFhb>+bg^rZQW(M10fRWK~v^ zO-E707er#r_g!_S%PlGehb^st|9Hk|TNdiqi0_v2whhlR2zV^MaMWqqt{oNJU8~!_Z9Rhy;Shd>gL~xUo!7jISOvyeDF$X)pHJUe_^`sOnn( zW+7YMZoTm<_Dxdo9SZl!u7c+wa@)v*dSkvmpb3jX?~SV2-%p{Z0700d8+w6yqdB)Z zrTYd==(lhoT2o$a{7e$LN}Do<;NJ<|I!EZxv9icRGKt!uO04%|P*C(fUDsuN?sd@O z)r%ghqjjA~Ox_;p{;wRc2wB`Dg}O1!Ks*clV-UfZ-aR{%vUoXq=l%WOjEs658^12P z9arlG(1B?)tNSL>xj=@byL`}zU?0!Fch^A7!GS-zr1jaB@A>s~&6|}iw5#QMs_DET+|SDlEBJ56lG1Sg|LRDi#VTeZH%k=j7=9hS z*3tgMJxXK@kvGoCuVrT&lr;=xUg;b_pQkL#8|J-d|7RfS=IR{1|tRZ z_${U>x@XT)yi3h7hb2V#FtW2RlM-0D1UIO-RLqkJ1sIex3 zLeY7CZ>MQ(Z5wqO*9PR3HR<0EY3c+)d(6(;ymknR{F$k;hXreOZHiUnlhfAftQgHl~A+yn&wiw zVa4d^Xo-{N>ax`C?r!JB`UkUw0ElOz6qTu2fm6wHx1iDwrNWO*r$`)f>=-B+CdB6V z@e>w;4Qb!c4SXxPpVCmaO7-LBrFJ6Py!SLkC{^`J^t1Ew?kV2O=&-I$7kdMBs?xAI z(zyWka2GtNG~1!+wqm7+iwhz2Tel}5w2tPynywab7K1E}WCMoHd=AhKou0mKF)wK} z%(M>?E%HeWVoLNJre%Ve*yn`#^s9}fYf-rEbap6|l_qH6;3U6Opn?mljXseekzQnffX&N@H@6`s4@^(~o6XJ5 z85ZRYlq4Vo95R2O%VRb3xF%UYTmoE|0uo2ZP z2lb{M@A34F1j~3KH@SU(v72wgsntPd)a?Q>8w75H}M9X`xp(M}gBgL&MeZYu( zcHYdR0J>Hn40TNJ{@pR}dT5upb;z--fb1-A_ILD=WwsVCC!;J68 zU~p@idB|*ky&_bsNk~Cl9FwR-pY@4|O)}W_HX)Imxh+l4slzyiv(%Yg7$6uz0`GmM zj^6u-4}XgO6^QvGIziK`j^K&^A!)D~_wA|tV*8brsmKQ;tA&|(ec}z|UWz2gS6Si8} zfMu?R#f%qn#L#6Pcix6NsWx+OFD&a0aQ7ZgaapNy0GB+460I zwmC*TL5c<=x#fPYkGTdNk!WwpV*#uLG&1F#WY>XC=#^gq;%Lc)2o=OpqJIFAQ74PM z>+N}(iH)sqww}vam}fmAPfbZ;d+x%g`BtU4X?J6TD_yhd55_eX_SXN7JcYMrKD>qR zv6B@2?F)7+mquMsioh%!zk=WAWgNA{H$Lz8`8lpAbqPG*Zb z(EB4UbR-wZcN}A4D(~H!=RvKitj-exf3E5vg{125l> z2IA8E4j=B*9hFAkfz8Zr#`hd`7p~x^)^+6%VX1 z@3eQL+GmKm$InMcLGZJ6 z|A9P)O{IQ0@XWlqY(&Zo*MoIvcsTSgHxGF`Qu`;MvB?RKp+oz;O7v+M8DB9fe_D{X z;a9CAaPY3nf+uV;H>mx9vB9>YKKi^uctQ5)lU8aQ`l$ogVpYw{JK2;ei6VjeQt?<@sC8_1}o-H@8ign zlu?+EXv5ycr@Kdk;a;oyvS^qp`M+-mZ{@~#N{l(HHI^TX&C9FIqSZlQJ4j+^r&Sp~!o+tP6gcGrf9Pm_@jkgn)dM3EOhocvAVnXrXWNh+VamHfAJwj_%m~|pscp#C-fiGZ zuX5D*V%uHY-EmR@FQ>2rdCrGE&`0pyS{f`+wZvn0>)ukP#Sd40wJQG8nBr*dXZ&_& zI5u6kt#xIJ69esW3DGG*Ox^BX>)*@gI-e$k2w5ShAJ}y(_fSs+8C9lvd^^bicQKfa z$1p)LPEXI8&M86yVpv+KjXS^-E+2HtC+-~XIl>Nj23MB}bX7?3iw5+_1O>LdsAEX> z=m^HOi72!h%w)!Srq(L949aP_LEB-$`RkgRtYWAD7rA6?xQ$(vgp44U`(ZBI z-pKIq87`VydKjAUhBN((hjI3Ay#R=)u0uT?TG(yWlirY0S2Z9dzJUHK%7n(DpH z&A+)+ntiwFykKaQ4pSPE8}r)>a0M$SVAJ?Kkp&_y-dx(YnwvM+TMWA^h`oulk{nkm zUPWCU9C+ElpXwZHOHqKp@_4dPKnDjt97=*{s*ZC+^6Ikr)PQK^r{P=9D5W&b5=G|h z9PrBG${Ze=nqm^n!mOptQCbbVR+@QiyEK#%S)K1*Sj@(he6X`~{GC|g_u#8k_PJR% za3C&rc8Eu@0F0P0+8pnZix@3n?PQvJYv3&dO$dM1*RNk48~Cp25r2{&bFl5^%7Wvx z@aa>{SEt8eXX=0tcl%2iagi=ty|uUJH+mL~TAHM8`1&;q9Z+XXuEZz46>Uv=jEM@e z;e)_nWDzmcPzQKM%_AEke_|zLmnuJ=L5N!5e*vpg13a7YE@2}cu)$xWX?sDwFLE1z;tQG>r|+Oeyt^bQ|SM3_E(EUBR>Ae z=$%%Wib_9LiUu|RqzKX@FZ`}+h#;2!X$2Vp)ktH=kE)x+wQiG8kYy?tc`@+q^pbL`W@Dp{C8si zRR7Vl{TXQ!-c9hrQ-CDAd%YE2M70lD8a&cPd255r%tY7zEm|Oof^7Z zB^iVfKJ25X$dTUk0`Kqlk69WRrLQQ}2_W?6#ym-PA37wH-fw@|Qwi-_ltv3Q9arxf zYHc9}{+RNc_*3*7Q%Bq*Bg2cbqwW=Xse#(JC&j=YONJb!CP(AThT{|U;14HfO}K{ca?gIth}tu0``WAQ&nw?8jHd zBrE24uRpe4mf46j26?JPKuyy!4pn|w9-g=jiAE|rY)|Hxq2yKfyDTa0di%1{z&(b* z*Y3c5%*OUT>EY!DFirpkb91n-zyEIvY?8GAt+F-)p8qU(NN8l-`{LOVRo|swtT0hF zJPfjA3YDm{+XLB@U$_dVVh4ZKE-W)C zH~6`B2!y~uJQ*6gw|moZn4m0|<*cCdl)D8aAK&R+?cXP%BsHz4$@sDfW@40;h!f)I|uZCFz zO>x=;z)UNd<`IfKd-RO!I7Z2c1?%PSb!x5>Fu`>1x;fP^|1W#J+bBf;ST&yHuRJzi z2C}e|&i`AFd{I4WxF(8I5&OsK_k*D3}?YWatSuE`=>=P>@&>k^?$+d z9m8tskGS`5Hzq#)6`@cSmXs6~7oT2OV5px;=J($N{A2R}?1(0OJ z3d4%<`Ct&rN+|G^ITzNP!TMiT$Z7zi`*(mrN?N9d)X%m8ySt~+6K!o^fO7o)S*Ng~ zNRz`!0&^uh1~T?_A8YgbQ#(9K?=UB5nDB#ZjlPs7WEzkcvV4g)4GCMvEb>$JEE+?fi@7m4P z{BmTk6FZzUn!PD)u~}axD)|1H=(~X=@CZgO9ldoKkw+g6Q>VqSK7Hi)%P|jaNW)e} z=%Te&JnZwHHM(C>Q$`7Qt^mPj6CzpXY;D#V+@+% z)aZxz%10hX%7m18QgI{K=F!s}h@5rB%f!JL6k(x6$|+LjX?|EEsY{B#qpLXj zC}FmI?ic>LQlS#|)qUOTHFbqnZ`an{-HU@yqM_H}g6#*>Mivc6)~Nx?*jI8TBjTKv zwLU@gU2AT8w^nSjecdf6|L<#KL66S%jq{Zs_zyF*efzTZZ+q+@jN_M8FD*ZUGUw?4 zK|6;XBvOjsu?p)EuOsDBhfxnJ|9J&-e=K)S-|tC|u$~6S%7&aW)y$bMh81rvhAmMS z^A#CzA~sETvtuE9Yi6kV!)9$36;r!tah?OkUTqcifh1B4D07(4i>KtQRQJUR9aW(Y zSRNr$bdvdPyONeiTY(*ny4TVu$S+K=ceA1g{Sj**>q=2QovejzTjd8*3D2psEiTss;u zSse@O7HL0ALJ13ro$sFAWXF!12+KTDti#JE9M&KwiNIw}3v{Dx$0SH)NK>oxLGWr% zk(;pETGb*+iy(oVBZ_!1SAn|h?%DmHGYsfX zQrWY!q+V1^gYQ(Lzq$L5iGkr>cdAwBpM_@()YL*UiA9be7!(|TU%4QP+#^R1Qg-1Z zLVVw+3xEMxjDG9n5tOb1eVtuGRnQAjb*IQ$WrJ7}_7XUhstTHpRNeXax z7kIpZ<(Pf;P$M-=Y~}T3Pd?@rU!}1ZJ??VbC}GvfwfVmuT&DJ=2tvRXj#Zvg%mNv3 zIivPDpPBUqG9}$++XGLW|5T^6q{YCXUe3;O+1U8_nDZ6S_U{YL0wedwYT1VmJFWkj zT8)hm&xeKz^_-vp(ezVA1z|2`3K$x~+6KI|Rlw2)P_%)m@tZ+}+}Kg@>(>&MP4Vh) zF#}|lGL;(VTqUZSN}OAT6^J1vjr7#h{bf%vAnTqp@7|NqayN6O^>&*vv+hY1=RL9_ zha{WoJ;r@#K#t9YJu*_+NYF;of2!oOEH_-lg`fYErDdd^C@Xfb?p>v$SpCq@vmOz1 zET|)x8vtfEz#swAI>#i0D?%3!5qi37x6RV;geW#^JBmE6@~=0PZezi z_#KKbkMz0U+_+fM(ZIhAYbb5cRMFCIG>-;gAwC3v2!jd>S5m`+^6dVePXo?Jsu^qP z>;fV|-qxf~F?ke~O5__J{mjWm@_)6+&3ayuAt<_ODAdx0y80mx z>_wILtc0atH-BYAu4bw`cqX&?zvlQZ9CTQ8-CgZTiR7nif(JL#eXg+_rtnZY0Bxc0 z?cnoXUe4&sE~EZhc;BZtY{T@<+uhFAiVq&y!w$mq$S+uDOzBGClPcs}hFF@x!*Dqf zJuOyZJxIGCeY_O(S2Sdk%MUJN|C*Bd3Gag1faz$yj62qOB3|sbTdQFYqMVKyX=*e{N@b%Z8|xnZ%(di9@iJ3tSJ@as7$U3 zE&U8Lfd)~Mhy=cVeM-C-u)yFq?{&Sp>T!qopjC%dt8@57M2fFy_*l1zV5fap-1^hQ zOm=)(+?_+Usf(uuBsN4rgc0OUFqM5)CB;G4#=!MNt^e|cJFeFR|1(TXmS~N|8PAao zPEG7jF@#xu63G?T9Jl^}n#PR-hRi-3S;aKX zj+J#18ayWO>))XCJMsn}Rw4||WV~#eSp9pgk$2Y_Gq28G-z|2XU3nQ8(mo;zV^d*x z;DP^Iz7K54cq@zqK@y;phs5DU|IUbZzNAZo4|u>*B-=-6dZ^rfNs}`3l!QmjlD)M3 zv91WCc`v?hU3Gh`d$(Fd*ixznjmJE8rCTK?DiKgpA!aQ+GCEI<%qE>r)zRmo)~S5$-a$*Zz- zcMuc2-F!5>b~rdV2mowTVu0nsL`~m}WW{Ne%m<`JbbgQk3AacYd01w%FPrFq#6&)4^>&|zGcif1RE=$c zg{~f#(Vuy^K0G{J+{F;P*f8dHN{oSyE(oYn-n;}qIB*9_xc+`xZm=xY6mZ*)mf!pA z@g~UHx|iDL5|GjcoSZGT*Y91?C=o!YH?}QX?D+}F^itM})3G?)xNy**-=`l~HlbrH z3%fa=U<0u~79D|h<^rNepn9)e?ED|k;-SUnu8jBUf6%htwKf2cGOBu!=U`GS=FD*2 z>T5>m=1+f_ZNuM@7-CM`(n?@;prSGbeJ_NaZwgrka=)*P34 zq7{t9k(haMdis^Ox2cQ8Z{Wjb(md?{$|vi)0TZPo6Rjl!hy^-YQz8`Z^ApO2*(->9 zTG76na_Z~Cl*qwU{h!6N*lVv- z2)bjETcJTqpiA|iDLudFJ+TZqYeOxTegBz$Gjlsvb9(<+dTdSq48Z3vW%p3u@lw-R zHci@HU(Gd?twRi=Qik&E?DfkUp$F7o#q?bBjvfl8YaX5CL}cvLoT1q3)G$=0$AmElUyAS)iSB&cwh z06acamOibefmIW>`_T=KnnwSA+aA*`-sUG6mle=1-gV0_E`D3#Nh08~<}bLp&IAyk z%o^kN$It+)gJ?q@-y3;67KpVyVF`S~SZW`|1{eX4tf2NdNK@XbS!p{l5@Ad(F7uaS z0jGN8_)EtiF)H*9T-g9Y_%HW}Ho*|W3d^7~;EKQe);hTEP}&%qF4D9Pw0z9@9fV$O z`dk>r@LFY@r+B24e1=#k6V^FE(^XfvoS^F1Pz6~FzmXP@Fuq|K?D5i;QnE11IJd%0 zj}7;C)4Li324%@&AN}{zSy`h=8~@_Zb*4Mico7;ghbT$j@?||e*Q(H_B)_-D7mm08 zg3M$_|F>e*53P6p-3}9Qrgu-A???sCRi(GbBUT|rN_NS3kMYBlY^~WjA|7Zyh1OEu z55XQpVY1>=A~{oDL%J^FGWlpX0&nP0%Y+bke9`!4TkRh^FyRF4hKXR`yYG9QyKcj3 zUuYFEsUgHq3mTAXpyU!QE!72Qm&`+9SxGNEn+ALKte3rJRQwwj@CT`(4#4NN&}qfK9)w zu~R@Yrb&$WVoiENOoa8O|GqOG$*jqq>JK$NtP!LsR08;vhu$V^16?o1eV_y+(+j;T zs#LY7U_H)HSE4Aj=5KiR?{U$yOuM}fH0=1DsuMNJGjWvYpFc@%uZ*N1$RChZ3JsS8lr#s;T{>YRb6;54BdsQZs99BuCc{B7+HzP{Wf_lSxAYuNS6{r3p>c02Am zmnI<)ja2jCgFYZN^g-gB+3&wlf52T5^LsD{>Mr*1AqvnYrlx$xMkRGYteS>Cc^`PP zf#EvOhxxaw#P^y~r#V+7&>-xd&>_G%S8QOuitXpBOfG%|ubpn>j*G}E_>fI8#_T;- zZNaIVpPMU}_nG@6r2`u60*pB2#cNz~a0wQCv3@C|Mqi8fDh(8S@p8nBZja`ktNfRM z2jF)f&&gH)Gn>rZb$^Y!c%qr+wbSoO`jZ;8r z&y2B?3=OFh35VUhlgJbPJnIS!K>HvM2*ynj7EI8`Wm@ODx+d5mQBa`w&{C$|)^+G< z@zdZZSVv8jhGROdU$kBMN5qfbQWSn&GEb3vZFSdic6;8{esNFDC3SG^NQ3@jo+Xg1 za99sUkH=Q;?{YM^12;x*SLeQ7IL+Hby`E~}Rr8vd_eZ4y72O*%i5ho_QnISwf8QzW z7bb!E9nAGTr9IQ-mAUjOwtKiuTk*YAE&2<_ zCI_D|emhJZ^#~f~MV;JsX$6k#GKF-tdH4^_>9DS<=%s}m`V@ptYgJn`xE4pL{H(22 z!(hgJl0`wnO(r#rx7@*Lz&p?%#!yRa`$cY;JfbNCq-*6hkaql#sjrUtWDFtL2JaXY z(3w)H3d>7Yq#eG1KTz^Uq`)w!i&OsgY%5%C+HgK7eKMAtpO^jN!=E#7;I6E=7}ZQt zt7URULt=`l`XP_PY4xzT`yC!`9|CEP8*t+0$rw0RJY0bK%RtZVW*LpP|E)q43ON!O zOa?NJkqPMEu#qBZqg&Vp63;~n_Rq0GP=H+p^(sB5#X$h ztvoA^>CjEJz25)pQqyr78hrW83_&9fAyA~g{00xB*{T}IJ~;pX$~2jMSZ>WJ9Cb4h+yX`@h__JM6#k%|Glz4gLS}*xtSTNZzu+i zf+DVnljj+B2Cgfv6<1xbd=aIwjn+&(ho_+qeu@V2+<3B?r1mf?K4n~6FANr|r z?uS>#bYl!A`$&ZS0)X=d0QUe&8yx_U0n)jwn3yQDeNx8?1Tiu3yT=os-RU_NFpU3WKoRH|OK*5=$C5h}k%yjjKi>E--A zFMn-HK|Ev|cBZ1|d%ph{xM8yAwDZw6yaQ!bUE~9GKD*%b{L|)FBfMTeEC3wL z`1M93^r^fgpbXpF-o|u_btKUPE!EFHNR0nM9~DRv@)ao2|0#XvbMJ`68I4p1D?EGgq>|_Us8Y-XmTs+mBOI zq6yEAe2$`V_}MuV8C(BqSqfQ++wvL_zuB)@YzSEK-XHZ&^LKf8J;QWU(RCfs05~NZ zS}#sh!4pv2dDQWz^ETnn5k~t1z0KcSK0I$CkFce5inMoCRcW7UlqIrYjZvZr>>(mM zg)OBmz~GhkAf;%xI!@3vMKZQl*s>rmI|nGV#ORd2m}{!A7a8jjVfFGPlE4q(#o|6u zy?U;fllrYF7rLX-O_~Gg_jZ=BNxx1%UXfem-u14e`}wkw$K^!%W_e5J#d8a-prc@% z*iS#sFE`P9?K?kyjc``q<*>G+n?HQJdbgaf`Y|Ed$$t0QOy~iJVDRl{A0s10C=b*M z_Vim54CocY2@`j)An3dxfyTDcDmC7srqdpIVg>Xp6&g(SMCPOxMTU9fl(-o(Csm#3 zi(yz;DF$=~Q6J}(*#1uo5GJ3#ifyDog@@HGGfoTp_|TF)+! z6uE7LsnS-&?Sc3?=QfU9ohu)|Aq*O(ghgtP#N(sq&YPy=)Xm)h`2EdI?l>h#WXs_D zkgMKAWd~iXM=I2hnOc`}HsKk)!Q}+F0GJe7ztzSa+;_r=;e5ANTh9Vk}VY z{3Qk#0h4+hBrPJNTJkNT$w2?PPDKo4d~ZHg>T{(DM3GiiV$6n&TNP^rz>vZS@S#5_ z^7+G_)|wdp=wVFZFz&}$3Q>o!7zh{eNC(r4ZF4&KBIY3MW{<1&HSx7hyD&>q>}SQY+8ukk6?-@LpG_W_Ep&sH`SBU9Od z;FloGe=O$lPygnZl0{sPeweyl{znjNa9;pw^q=Ws0wt;qcu`B^g0V$h!}XdalM4%E z$vg~&egljY(%agwGgr>v&^{Ck%GbPKM$HP!OG+9E`vNo|N`X^3ACm{yE=D#t-@ku` z#SHgK6Tvh+?HyV2QCCUVG-@>mX~1jVC&!yK+yv~th}b5R6ouEGW56f(q##FMlSJS1 z&1+P{(pHm8Mq&cs^FfNnd?0{gGa!F9-vA2I3;R#{<$N#N{Xu+Pg<%yzF?LCs4RP2= zc;Mfe+y-~owK$;TnfKauLr8C1aOHxyHek|on`?A(^#4uSs!;?cd_drj#c|VpQEfO3 zB4W38H@E)%J3;9JYK5*YSR{}Xd@e`QlJnEjx^8z6kT6Jlv;RMu&N?W{?{C8kEFq1c zba!`yARQth(%mWDozf*C-5@R9jWkP1cP>ch(!9_2H}mfJ7bC+gah`L|=f1D2<=p!$ zCGy`yI7f;?N=ajcw}nNCT3Oa1UgJI1e_dpB{L!;Te5QVy# zma2#H#`(Eiqn?8456i2j;j2{}v*Lrrfka7UGEu)vu$f>&0}qcIx9z)!S)bfDU z_Am80C;7gpVFTl$f(D&(hRJFl|9^L$oga!hE)P<|YgX@0fD7GYC&a8CAiBa_BF@7 z`W&x4b9^ZfW1zV@Sn5EF2ZV-;JouSqT$j)OQ-RzfZaLLt%KR~5LYLpHl7rW*Efwy& zCXS%f@So<|c(g2i$Bok&Dm~oMm>9Y!Hv-}y+TcKV3Y{rx9M=>oc=5MKmD4h|&hWoJ zP2tmnCJW>!gYl6-Rp{^oPOCsjjq#Oz0A957`R%uVZAaCQZ&WY4|6ukIB00)7ur-+H zUN46D!%-Mz3P-cz&WRt0?Hq+E4{Y@O==X>CiWXc^p#U2_9j4=7$y}=HH48w{?&0x) zNmNuiwXxxY|8^&no`RQ zSYLnMX%5OqQRtXjso1D33LzIYoE{zdonBSHJS=p3+1RwHGie`f)7bE3I%N&eA%S!k zYt|h5M{C~!r>Yq+MBXj}w5X_yNQM_oB@TK!EhQ5KABjPU7DPitT@~tABu`1j0s0a> zp3N))zBo=+BQTljncw6Vp{FsiFv$CPkJ~2sJ20ts)6h4n2nXI<*oqg)-5F2%*f(OW z(?zEuu9Usuk6N5Q4S?ANaCP*!Xo}3<`JXItl6z39_F^43K}|sx$A>&` zi_#n&@i!)Wa73_HQNeqMMqCE=V;yjb-H>q)0j?J9mIZpcIL9ZH;={N%86Kb06tKkZ zrfMTiWsX=T`2mNPl@*GVmOzxLF{USsMjn$yKwPSxyB?x#c>-M5tvfxE{-+57{{M}P zBr_=?0?Rn?E8w#Ja0AWlcDtx6UK14sZFXWzc@_V?+#3U0G0i4>qd=<2VYQ{UyIYLL zbE~C505ybyMDDjALz==^D$AS>VBmRp0Q$T2z-ju5@7t#x0x2yKc&WtG!&7~LNcM1Z z^!SMUo}KIiG|LTOP-@j%xRvQp4$#QU;}ihVoE6}Hb86T`{HsDz>(YH|t6*RrH4Oku zU2JuM9xO%yuzKnQ7f3W>;QDEfB70{;MXBt6E8_L_;q0C>V+<9Q4quxcFvwm$P>~dK zKi1;5wW%6Q83nEvCO4We;3Cu;b(E5d+S`3@%D)0{#Gu*T9#49`x$+1Y?gNXuMAC0y zD4#v)1p$z7Lwp}??W3s#cwR;N11Qv;Wz5nef>}ntK>A{lKv4J7#M}|0@3WNJmd~aQZO}Ug;D75?GwF?%~GbNVLb^NZo*2+_LwoN(U7R}?u zs0Kk?pK~wgk7)%HLcdb)co4yagw?040f-K`n*U#{%o=w+cKI(`qv^WolxU>y3MqIv zqAPMoJo0sePrV57>uy7&LqkKEH(mhw8Ig*k*Y=Dp4@ zAe}@G_42uZhtis?pIK2q-Xd^>%;<=J&K9Y?TGDifsZ$p=s)72*wgr%+uuOo%F5Hwj z)hD@f+VH;_AJRLi&bRTR=w?ttKQd8=f)Dbgr7VJ2nuDY8yp9qB69hszLE~MWjto+I zT4r9}KERHzSPt}_Xtg0LXSrPKzraihoOnSVS1${^+{f*Lx#Axhyq)^Xry_>fh6Pz( ztyRw0ME(&9jHGr7lz2Odf%kuRcWX^?16zJ|i*X@^4B?iAiQNjYs@XllyZd*gfLMmH zmTN1isMLreKyts8@Wl}$K3-luu&+C=wXc6UJY9P|2&(ZvvBfuZot~PafM`GEKc_Iig9=6!urS*h@3er?Ya?GS0{opuhKIv3phRJP zJ!B0s*yj*qU4*YVO+QV7LvlilP06}of@3UcI6P_9nn`>U_#^T@- zhI)EwDw5G{s_pb_7Xt$913Q|@9kt;4EEUNel=JaD;Umg7?==fFW4MXhwnDNz{`u~ow7tc+Wi z_rugsQ{Gx|g=1%4T{UmG6T=f#G0*)gQOewQe)H2$_YHpG@Sc~Z=EC{8qblBn3^$jM znob9BKd-|?NfCkP6&FzrG-DIZ6&DUg{$ZI; zalm)7D3nWWJTU&O~sMJ~)6G1=L-wM_m1tjeu&ep2Cs(AK-0auHQT8-@< zR*sJTUHQpTZ#!+~MoH67x}SAT(HUn{V^Cr(Ojquq z-51RU{9bmxc861Sw31y`zb6rN^9&}F8YZO=a92A z&%yf||HEirOWF{-OqoI|6AKWS3zMp5rlj95o-}h(G~=(f9YDEx*`?3Cn$=lK>%5NI z@L3@aJqmq$cpZ24eBQj_tG^DGYH@~gYgTEyxo!_wet`W!c2~}0d*f!TN2tf8b4dDI zh)vwfij}r+{k~wS(nr%ug2E)oM)~z1inpJ-P@XaJU4a%x62YFG`(3T9$J)(v8TF3J zZfAf0(Sm~(FyyP4T={*{7tNpDZSQGkK6yS}=!N+RJm1Ivmy1@_-C3WO9;BROqEHt!wcepXY^jVJE(YYB-(*^_Xc@ zEvaj0-y4OBY2{r+ElO26BZoa^GPS+pWjQsEb_y$0|^?4LjZ-Rbf zOPs&M`1-T7@YV2V%eA3QEN-sC)c(ddc*pl2&d^oPoIVIx`jyaTP>xHhdIFC#c~D?z z?)7$l0!1#MM-scZ=1M@JvMvm6$PG0k*XmjMkGa3~-J{gH?Syc}$HymK+qa@PZl?T5 ztPElR#U=>+NT3^TZYi!H1&&JoSQV0)?#RrHjWcPKczY`LlvVMnUzM0HAU$xOJ}Ync z;UfR_cH1_0=(E}^>h~}>>`G*=1TPSxtg;!q-x9OCSY1s;yBKq&noI)xproBlSI(T} z%RlywS7LUrAb1M6xl3&UmmFa*-I=KICQSo6gdxyUCoM3zrId2ciigbiyjPZdjeZj! z3xgdv`T_mbb~OxjO)4(=?dU!<Ntwr~ciyi*=wu$NDw*;Tg8k4UAOtF37tmjeH6i zfJ_r$&C_;_LTQvaV=b6@h>7{itmRO#6r8}hzc?@epk@iCevPHY8~ESvNiA~bVV@yf zN2C`&i_*o}=VUTmLJ&Y9u2C?sWqy(b9s#x#T97y}BEoUK-s#WzE*jZ*Xmu9O>~=N5 zF9rlc^;1rP4HjvdSba@R{KppkyE83~??KacJV`V-XAG`W(v|fnuE1&y{LsuSEM#y1 z+C*$7A0W#1oQx4?O;mxKR47|ra`Z;965edDY;+>Y*O-u@?m5CywWhA#E9{sWzz|_i zUUY#lDuF&Z9cOs`UZ4Py7Id^US`6IpX1FIYL7^XIM~?rFH+MhVJLspHJK1GS?7QUn z%$=WeSih@#sbpw?Gv#5J&|XjKXZqU0P*;ibG@YzgG{yN{@+vHPY>(nYPv4Y#nQ3^> z(D^ztem4jiwX;%1m}f9yKFG{u<;xe#qOeS~3+NaET~#F(38*SrO-Le-Pbi6O!{<3o z5!5F%h7L4vT6U8ZOG-X76>swZ_h5{gCM$OScQvmj(70$~mr|t1_M~Lg6*KVrjEr>4 zPutEO^JaV_h4l3ClXL&ln=!#|_9eH)-LI>Er-we=Y6f`E#hv*3>qvgi!fmQ4#8(Aw z!ZJMTQrG-mB{9|O4=dyss`%HgH^gr92{LRoZ(jOu$n{0kI2ESKcXqz8zszZp3NwMv zJD~cv%$i~~^LD=HI{{Zc{Xd)KM2gh9%v4tLEBlub<6@jk(FTTbp?`pYW0=SV1QVdJZqx`ZHX0^M52ihZ(8pJA3B z3iQ4r6i|oJfgTkj95|1M(bilgi~t`8MFoygWf>tmBfX3_V@+RwZB3LaFZuGgm~{1f zK)-T1UlUE}PfBkYDsh}MVeyi43ks!=Psr~A;XhKvdJYzizv(!=aq!)pmUL=uH)0a` z_v@IT%eP;%puu}O3`z};_REL|zVG-W!*m{~oc1}%*3fmf`I`tIr$KdcKN;6yUwwiM z(1$a8e&8P!71f1oprGVv=l^cT8@8daLxX$6v|mN1$Pj}a!4W|b>Gn}FeBgd*snzG~ z`J$`yF>3X_Hm8gC{^ImbJgEQxJW1gSR5|?TK7aVjybOtDTab$gds!hb80Cbj0hOAv z<)<4}K(Tu2o`N;7UFD*>-j2k6lU1MngIr_{`*+pCk`NS~Dv-3HZbnGtf(1TMiiPBu zGJ(Rk3f9XGCtv1Wb-Q-9>U%e}MH5ABI$9j{TVS%NVSZ4sB3Y-?yKz1vG$^ zKwK28q4O>bkup)7j}EFgZ+E)UEf!TE5ZBI}Vy>9Rq;``1UL}h5SX;Idwet!@P*jP~ zNl7s6k)iw1STVH!3UrZli}Cj5ug2Ckq(KsGkmGIG(bi%nj~|eeacJLhSF^d8NgQL_ z;N)od#x^IMJ0^5b!5rADowT{xE>scgc8SP;!7;Ww zc^4RJH_@D-xLGVsrl})%)-avJS}zNhka=s%%J9}g9AzDGJ2U}1L5>pM`ecz41)Iy$ ziA=N}woE`{bf)?Pe_xy)X_w+A`WGIY#Hq7+vc^GH=T)3AK(Gx0=^S}?ZguK*nMiwh z@JBNs#(ZKz3FP)c28l;R{p`#;7#^^efIGzkh4#*oyhD61Edb%*SVnZSaS{Xx`TW@i z(f*4}4Wr>lNvqWIs|?j9C8)a+&xkT3GFSR)L6 zs=lML+m_e_t|oA2xv!LL)lIYlPQL{7yZrdN^Ljw)u-w=rlXn;4uBW7&!I;oWc0#-uaGroTYsBK3 z6qIiHN0kxRSqCcqeme11h^tsltqc}(@ugH5r3H9Mj`Npb#!dpW*5wXsQ;){wUvmIO82}8uWIEg%Y#Enp7`8d5D2(Ne zIE{U)b0nMnn>d<1r{l2U-9;&mZG#LKW+?-(D!q<3^U2qrLwJ->&lh)Ti&MRU#MYlFxFT*P z1T2-et1w$@z!`!~}1w5vudW%7!4A zMitoNjd`53*`BS-&hWfbLnjE0<;7v*O1vNBcetiXGq^;L9j2g@!{P*?_^8T!@3*F< z&F*;%SNlgpJu1N%U}FJYK1kw4Aqqnu&9CIRPg&4E*Vp6u{lK#4c)q(k!oaoXOq*4r z!rcU6^6vPh)(($G1>B&!|L;q7&d!zsQI=pHdPH>W{J4TZ!!yrn(QlBV`2(-fC?i?J z0AucQ7vq(U7|LdVy!Chyf7Uq9RNNSsE@6U#p?zQ#pL!^ zVSFJP@HyaQ+4J%TrmcGCF(&{#;jHt@z*;FPR1oh4j$+X$%w4KwAo#o}KF|f%ZbQ}5 zP}rJs{QWUjqG_o-PQE2`UmwJ3BA9~YCqWb*P>sWB?fXZ=cxh2T9r1$z1W(GXMx>QI zKTehq@mu=T!I0%l&{KnfN_<)-+SC15^lYiKeaVi901rfBpqVgDL`m8YbZ@6xH zy(_3l4M+MH2VY6iSM5TX<^ULi5BZ%_`5thL9)7(k+4y&II*;n#VY!hw!Wf}eVG=!> z$VQNvqspj0ion;&E(MMZA{Y=Z((z9H)F}YJ4Y*1XXF><-i@+_1mXJ$Jg)~?6TYPx5*n3IEXw5e&^J=582IK6VZH5 zgb59NUuH{TA{~!m>@7&za+GjHg_3*NuamNO-ASJ3hdnok;7w@L0E-+5Or!2DOr$?U zwa^41VWo*=!jO_eO$;_HY0xT?Dr(@9ve;5`PsM?Ym9KwGi2=xZovzZN~JP_;A@#r=youF0IyE!T_*Bs=3mcpWM4k76dbK zCkQ-BeI^i&v2g*g5rC(YQwDH^gb#DErsx~LS;0v}LCphiCYw#{v+@UcY*71T#ts74 z-oSo?&Z#nms#vmWMYuHf8)40dmu1ABcR8G1p4+jd>d1_E+Y3z^g>M$n^2|-e1Euh! zoeT{P8`ZLNa;*8dt8TUvx0pRnNr=eGT~ie0g*bS2qs9e^t!Jt3>hK^kPM_q0mB{^KMPqXTr}EXkzO)W#B+SPzO}A9IUJu z10_LgUd0H1-i(js+KA!PfqrwqVdGffq1+OqU=QJNQ!`o2kD_n`3IXw- zOSXj_%rO9D37bwT6G~AK3uo~csVwX#R-}_G!M~USTRGq~|Iu1fZYZAAfhR-TAVH15 z1{H;QzS>Rt{VzngcXvfYp~}5(y}90DuZW*OLQf>{AXIobIkcJcA$m!%iJc)s>F)o} z0+f>W1V(H%yv+{`%wpW=x}R_m1cn9_!Syhme3vCf1K$&7g9np~bfk)RQ79oc`)sgX ziWw(bg;7X9U^?q^@ZC9r0?JrL|7Y_(wUKwXIr{CVOO3WiC9&Plg9~ZsL`EjxyC{q$ zRPs#`@(O4?TpgblgZhVN8j!)$7x*6@(;vn!UZT8VZr#FsLT1sQDz49aO}k%x&RpYW z@eHq)`73qmPs3{fiZ1_J62h;dC~Hm4SI6bqc-0ZgH`bE{k$S3mC=^^&R=gY{9cHfD zt!lA5zZfd(!{FzSskcz>rcT#*ganbv(>jb&5h*ffk8SObj}O31ul66{Lp5n4TP8?ad&*kKM={f&z4|FC;FUuKYIH-BA>O`YC;}dt6J^;5Y0s9 zF=a`D*!4X5#rW}m*zoPk;$u}2lh&@w4l+o&=g2XG&HxISPL=w9KZU_!CP@yiS_MX2 z*_^%h<|p>sbzumkz71Cl%IMJU=lwN}Wuz&}9F17BhlLcKE-2K3BM3YTZ=GrP)}J!- z7+#)YQ%T~DoslG}B0ML-s=b+RYL&^&x+Tv{Ov&11YH1eW*zMFrTv;4c%vhg%mZP4? z7Ip~ehGsc0o6?fFJB3u&=UiqidO>*hSJ3 z2IGQ$l+nxLf6APA?_q@tCUfw0X}q{$-jK|Rm`sR zNdoRX*9{y9^^e^|1@WUh?g`{HUO|u!{$4sz9wE6K1!1?~<>2KYwAdH?i;s+-P70!X zB?j137*vvZrKDdQmij+GjI?6+HGR?%fM#7Z!MbTT^#oMy+Ch#_KlJhiI0UZOgu7&W zis;{@L;Iu}Yh@mDt_3zaU0|@&rPvB{*bUAfO(cjL^V^u3O&1Li%~J zjyOe3sTl6xsho6S;2sXtX1k>}(-jD@gKyYb{$@-bY3QfZ{S7;fCaSj)!@P^bi>$y< zdg+n|x(a)CZZ(T7Td>9KCN@n`z?s~%+kgR95}L>($XJk_AKm=N)w zt`p#AqV~pe`uTMN&8CY!74s!rVlu;S|4u#&N2_72S&f>PJMbn6!@X&=;Mm`8`w;44 z*LTUn?lDeg)ySdqYOo%0&ElP&pl9n0rs6afZ7v?msU&HnB*nrn3qd9I7HIE>TY2C? zJLsUQAijw~T5N68K41Th98ra`t=`_87k?=6MraIFz+}3<_2cXHg|hweDJrP>4WyKL zLalk<9zl3MqdFbEBBk|Br|B);hT)Wn~z4o7LRz&hHYHibmXnt?4M|q ztkgp5EvC@M`L9meNl0A|4NVGYl$9)b%dEPLYw}YRbLG|(vCJW2 z__tc%;kr+#hx6zErIWfJ77R^EL<|A4Hh5B9k4Y-`fjmG3^1TcEgEoggw%9vse30l46mynQ`6J!(HG>=qIbv1??+zlyK+IoOR%gl#;W@-nl_RM8N8&d?qM zwNS5VZyV$VS!$dLI`YhYdJv>&@*CTK^!KFy!`+YY2e$U$&iK)ht>sk~@W#$p$wqGO zv3Fna*7!Xa#@jz_YjzuGZsH4Z?c=vU6e?)i2s$bgPkmd=fA`i=su&NgGw!tdv^R(X zy>T?6@+?vX)uI8s^7H5F(?LJ7hlsq>Wohn1;j8lw#(eNuB)ZX9wcmG{A<9u*GA%Z) zDna~+&ES!s9(XEK1~439VHFpNIPFM3kl_cS`~ZC(3F+aVlccA?vYg(VllvfAkdz`G z7!FDmZJJ`HNqMqz1XTt1XnpBqt|2K0Q0R1dpjNi*a}!91K@Ke>Xw&S3f2F zS%`r{At-4qo?<4$4CnZ;JA$w8RxE{1;POpm=8X@Cu&;bf!`|QdsEM>)u{a9R1idxc zDJk?G9zHIcr27il^_}ddAO14%jk5Jb0vutlHo<*-CBUSdYqz+u0UKGic;OqZhwT9? zNhP@_raVQCml=`m$c-l{bJ1S@&hYbYL0?3o8_zRc=XXxZP&^5NsQO2BfiHbcN0$~A zD{g6mF1HjK3f8gy|30T6hNGiY)_&X1OPODmV-w&4|D7k=De^a}lC}gzK`>^QtV3-1 ziGt@U*jw+mQ-IyjDbH7s(z}nF$Rz1A3XX*PSEi=8ujf?`?7CgPTif?Y;uOE>44NU4 zyXcYm!}fg9j8bGd$E_Ixzg?9_mWdiB`A&bK}CQ3RAdQKC7=A#(4?q zkC?_LZBPO&mw1!PIICfo?^0dySgJvT<5n;&K5LG!2V`nf+|rU3T@o^_Q>bnc^FA0M z;milfodILR&x}VD_&N4pKi7$D@o-h~hC2&{KnPEJj! zlxf+V&bo`;unbOeCHg-0G+lJN#eE6H)aD9IPhSEe56%z)=vW#%b8=L8 zgDpq&`(Pd&;oByJ!V?s=Lof01y~NhjuIV-a%LeQme$IQJcC@BIKF_Mj)z>qqi503Z zxSUC!jE+uZB&$iFT3SyM>1@oJ+B6iBHhu>j&|6E$bb z#2$FB9OzHQsVJIe9b7`q9w6oAaMlHc%VJ`)v-ksEZWh*ln~fwD%EsGNu`V8_A0l4u zQw5H-2*66FXdv0M(=JW@C;Qu1*%2?qjGzo9C1hCk?!Y_HgvC($&K);1s8aX2-2UU$CPFrFU4WfFUZ%Z%X8xrfyz=dF z%C+icDByDGB3;1LK)+Vc(xJ9}gM*zj?@fAgx-*^%&$1k4h+g%~T1riFC&REh9U*dE zFbi^qkYJPP4(?;KeYPm4g46SUroppt_lvDO^?p(@n7WjH!NH$Pa-`4KW}4#5a@#x> zd=R4IJba$nE)Ts_(pATq1E8a}hpnYSAjxg*q8lq6CnFT-QDGub_`pBfGT;FLN1SlM zjjO=C>4+edNDCY8dp-YYX+;Z5I_2yvA*ZLQC&7MwQt6aI1@q45XJ8F8EgSS!aM@?4 z+sDBlHB03*%~Or1#gCaDsht+=@4pIvK-X^2;B!;?&U^ ze9uI?ucvnkOI^ZH3$XNboGnJPxVdERB?cO8TGjopG7XfFzyX+F#h!gkK>AuaP-jZe z_Pxlrj5b0O%M2}_YE`LWrpCMj&w(=UyYM79 zc0;Mg@>Z9+%~t?;(#eUg2Pqg6oQIKZ9n#QPFi&L4VofC}rB`QCOCaNq?QML}ZZ#7W z1kAtFfb7yf(0bjvsR?)nsCL(vY2Cg69pef*2?Ltf9e{Gm6?WUE{XkqZwN0nstEN&8J5HEso%az~YkK$5Y?TxnIN!pp2(Iq|T%(UloRIRF3=#EaR_SM=x_M$a@__og> zEO@{9jHQ&F^NDzAea*++ekF&`#Ar1w2bY?vfbvKLHIrJvz9$3W@zx$FUNVG503#7Q z9wIXg!XM_^D=Cw$+1T2J$!PjW5V%dCsR=->bN(m(?gm4Wh_CgUZuKzR# z^P^3VZ?N3FzlBx@1gvGuU)J1N)i;&xj%=RVKw48?yp9wsQ#W&z^{v+LJw zKA&|WHb_(@#*ll|C}JW)-gQKl%M{qTIRbu0lix5EIIafyJLeN}va4d_ za_;_VzVMr4d!D=Sch?pc?!=Klo$nr6Um~1ewL)^#V0p$L%cnu`xSy5Gs+#6?DA>{4 z9v_+3L}|2=N+eLiRnGms)|{>bZ?hju>3AhuDYo#l57VEGr@441B-KqPNSKi@FqHq9 z^EEWRF{L8Wk$ua&)n&+HIB}`s?4?67k^sctby#Wc3m%mx{7b+7DSj#%ZeXrF zbyC(!{1qBJyj9x}HVBT(jI}G?MN3wEztW!on)L=E;0Osd(*rdwKMh0P66V(EP%li{ zYMbcTHjY*{D*N~zr+;X$cY33O!V%abfIp1L1s50rX(T0t9>BZmuE5Em{A$F>qLfhf zfa-2sMjy>T9{?I0g~O3U%~j7%TUH&@VI4|BZ0C7( zS-ty$F~A#m)&>0rwiwYd83a*EngNRMyX(ILueKP8a}ID%kTDfU32YBI<{ih`R}Yn zkmavEfB*gk0G%Ld)dsT>6J!~{cmkcs1ni&Px0lRFkI2dM+Nsj5tAsFR50*)d7rsaX zXm>=Gy&$r{|ne#d{;11|`VqLWy`M$-jhePu@SE^H0+ zMy%SpHT<`yYe1GX9;h3#e4aTyB^wN*YYa8@~80(V4XR9jOove#mTzWd? z+z&to>)^o3!EnPRB)$sme$|Eqk?QUEXJv=Q-}yf$p@ml7Hr~KLcZ)#_LO253rygh* zj}B!pA1Xj>KzFk6-k+8wW5id~&(3x#7ZD@K5tfy+j-B|#joJ6kK}ox{5%M`aCSAnO zduKQ6y?FJ6?_VWi}DOleh~5B^L_vs+t~w&+|huHg0eEFWZxpI063 zUfuqPlWj(%m z=`EVw*KNU`XM_nC^$0|3jmI`#Pp}$-&G9ihce2lxyL`^lx*l%uq$H9M|5OKg`R6AQ zaxkECY{^%}{&*?TNnuKnXzeRb(=iF=4o~9DkBvS04m?#9ii z=K8Qey%fWJm!vGYw;lBZZc%rAA8$= zd8UJZ|I`#n(ssDA(`2H3{WdOr$DJ*;RQ!|IUO}y>cKE#~+|xij5?ly)=)gyYtujdgE3QzC79i8u=c3udxA&a?bcW5xq6R$`p+>!ODV zk*T;gC3#`l~d(VZ$x zKoKuZxGiHa0t~v10TZ&oy~W12V&y;z{#cCnJSGAo9d4-ZpIVAr+{bTSh8 zN|XprQ>}e!?7rVm>>qmhca?i`I8J#Xj$&zF-MHUZ4>CJQTfe$xi287z82>%2PCOo) zFt1U=`CANXfz|H7Fkt?w(WxvdL3No}uP`&=DuXB12Tx=Y^9e=cO7~_cjs6O%{}3?@j}jlo=YY zYI_MWluAxEj-Nj3yLWe6z`G?Au!|{MIGSJH5)4VxtMkokp5)9Mj3?h{u>LWhL5USi zkvmCTA;>|cro%ZX!U#CHV0Yp4<#RR}OdtV1p*o->!<$x<-EF1HCEV`+{BZHb)QNL4uT$xTjgyJO|q7 zR#o&Cb+8%rQ2d75f5brDnXQTye89Swztv ze^Mvwd2YNy&qOYVA1F{#*}4x>b-$(C^Pq-7sHsic-M;}Kl9k23p1-^3_ z{pW4~NKRLfZYvrgL`IiZwMirO%7M|hu!dR*N7KqizKOSHl`4!L*Vm|9<_d)NQTK8j zc;a)Bk%f=9aq(mb71L=!^bbgnX>2;4M~@EXIpUbZ16!ulSe3e#F)38Pm=(vVetceG z11s!iQ4%m?S0S=Vf5>Hi=gg#JGy8?Rl%8j%;QlJ9$jRBxtT#)r`&GAFko!xlWl1W_ z&-PQ}bUHVsajYkA))WbERk*Ji%x=RMKagVhVr{Yj3&JN*wVunL>%%YgxTRe#Lu;hP zCX{F2_ssT+$AqGtojW+WIr)U03V3+LChF7^)dqfY%saBF*9 z^8fHaMx&1Jg@f`xzc;l`Wx#6WT;pYRaNoiXVq`J+8sS{oSiapWXL8Fh#MH`Exo`NvPS!hx6}kVj0RQ*e z{d;|Ia4>ZaT!ExUG;`$(SSn2ti5E6rQBk1D5G!*iZ^yECQ=(tNM9;;kze%ZnwjL|q zm3RvW97`V!T0CIYK(urrg&h$3HP31pSzbm=x50({*&9p4fMoj&k-ly}=41D1DVhyu zh;LtC-}yNBK>=_(Ts${bv}JT&LRQBjK?oc8j}9b#K7)I{Iyysyq%MNNZzF6$i1XLE zh;2qBz5Q$;-N`y1pf}uFe`YKa@!aeIEK{P&3XJ$Hdg4-X%4dT(5u5OYq1Y${3&dSe zY6{anf+P7!djV))!aIqUNmy`?SAEk?b;hvn={@&MnRHaD^Iua=}!SpDZfiv;K)|2sPxgI)oSMVMbeZ}9y$dr}&Ec|(7uQbbt& ziO8n=Sai;QK+$;pK^M z4%hC81vAKq>6t?l-l{NE}oa{2H;Iqdda&=o?+mpjG`9m+X_iV0ZX5ZH8 zXtZI4Zooo^e|i64*GR_CrrlWH+#RoINXtmsz~72-l%2>7`o-d9wnmLxO8@W1b0mot z-_X}7)nZ-;51xRiE?pz!8391#4q8F(4-O(3P!v-xmo{H2*ZxdmKHNnjUmrpd#Ju3o zXFXlB(rTVvv0sl(ckm>nzIiy0hz@#HtOa!SW;8-~{j+YOAse^#&tAC`Gp+~-W~{^r zng~E{$1nHc+Om%V{M&j41wNO18~wvg*=v{YA=N06Olb_asS-dPrcoedN%d)o0l<~F zw%xae+*PbgVt2b|SQuC+lkph;#VMwGpH(-X(}-(iGt(>A^&w6?@FO}H5d&aO%vElY zO2XTL+qKe?a)0b_z9=6XF@JI+09D^FJp9?Vjz;wuTT`sLt>i4rNH15%8L$f{II3R!9T zOd<$oGKZh9Y&~9U?y~$dnzFFwsQ;?cZ5*0IBI@-I(teg+M(cvl+W2XJaD+lOwb+^n z2~Mkj*cpsA5cuHJt_eICFIELzkRH8-nDzJ6fP=~L@!?2Wq>g=)TEzYYsf7%uZ5j)M z*!AXv&sl4`7K>GJ6=yIfmAdtNPYF~U&jO81NL_d`%6!p{PO%=#KH8%P`8=xk<7frD zF1HY$#_4f-`5$2q^68kd-vS=f1)rA2B{KL<<%QSz-eq-X0UQ#&r zD!da!U}rpdRJ~Tk_nFvWVRr3#09W~wvQl`?b&+@-UF?X}NKd)C^DSEU`Mw&ZIFAhT zAQ(=YD%^?%glxX$@N%0QaNiWKL0pFaK4tHH7@is<>4RS8-vc~5E@7{K_5iJ7BjD<& z|G6_Oe+Va%fSN`;JT+q+!KN3>cJgZZG5s?r$CiG3Ls2GSepi;$j=a- zqYgctL9-38&OT)Y$U970(6X&u8aFhk`hO=G-_8A5taBxN5l`+wh)$v#k-bYXqAowkt>)}@ps zyYw@(oe15OppmBv9j-$MiA)lUd0kHRhA1%7Won#)DEb{;&35C2PaV5eZI2e&F>jd6 z8|H_9&R({S=1af#;JKuG=WkZZ<{0Lb58V+nAKTSTg+!Cm#Gsfr1*=H)e3l1&Y`aK<}r| z@!SS72vWO{ttPF46nEGvS?8pKhv=TNXm`A~M)jANWgO>mY2>>14Iiaw@QG(I)$G@D zm$)lumT)#FpH{x=R!u+b-e$D7sjG!Pk^Fxa!1g(e-M6+k2#9ju|2a&T|504ycT+K6*~Oxm#G<(4eRELTFJo@Y zZaB9vOUhrK$X>iV$Y9QG9*Zb5jAzU`$M{jSzO?iom;pg-6w$}sLCpQyC}Td2U4Ld} zjc}+ec}ricW5H_k?KkgPVvMEsvu;D2yad&Jz0+eE%6F>euGnBb1x-2rnWE;>n$ns{ z3L?n6kChG5=YED9A9(%$T~8NUvD);rR08I*i<#*6Y`XKp4s82{d3re$b>skD(&iw8 z*r4uKTGPz~#=WVXmDJcu@mCuuHAZdT1~QFhMuAu_L+_+hrJ5A3Hl8iqVYVcFZ&Iz1 z`;{q{xIWA7L&A?8ZJkW7qs(>3of}Ok4eE@Q(t#7(6#Oj60MAPmGn9snWfK^FPuJq6 zK&sU&51@~^w{72tys9jv2 zadxrd@OqpZaH>p|`$z^Oalv6tq-+RmI*FX>YFb1@_Y8t}HTJ6J73ba~!%^LA{fi09 zNwvi8;wa|fq`Dd(cr$rLqWkc->c>*fd2O&!4MSYXN`^%IDd;#<74gcD%NqLeo_3?j#J4;KyjqZnk6^-*n`aM5Mffq3`F#!Pq5s?i9BZ1Jqjwd@O%jWM6kV=Y- z9FZw>db)FBG$&cGEGdbd5&8mbl{|6Q9NR0SWrgqo4(P*}|VS;+=S-S6tnl%P%D=WHeY0nG_|88UoYk`l-rs>p~jnoyV zdFM2n4mAM-tX=2UuC5P^wAfB`m#x8@Z-d~pC__2Ts-%&Gc>M`Z)>{?1mR44Lo^KYA zKTgdqy!Mm7V1s~8n?|(`;(V$wAXS@*Qe-0)^>=-KxViCO+tW@}CR zxq@PJxSW9Nc<7bA%3|u^2SxN{v&-kZST59AnGgg{5Zi9l*upjDwZl@KG-D&MKmxfa z-&&(ytGbD+pevSdK%Z{au^&TbDQLZmAu3n`E|f$2-+6(1FR5PJOjv{f6=QL|9q5bnz}~?S;fy8P z@M3s+_YGU7RpLdzxkK`B{7NLwu0PdY7V9*Z-{WpZG1dAVy%X;-lU0f%msAfJs%MsJ zJ%(qTlyTyNIX86l&z0=sCU281|<>r5tp_DaDP)rRx8Q?O#* z^pho_bjynVO0=@D=tn|F&Im?GObi@7KR-{6x%qcKJy|^$1={2k(Op#XkA`5;vZDmAdqj`spN(<9)3r zYImDg3^C5t3{Jwp$>?K_@ZXxY>=qSd6782}%nEf3TKFi@YlmoXckpO7WV< z3b2|E3ckTv^GReO-)FhMt$7?C5W9Z~h*0f-z{KykBJ%n*kMOHZh7+|Xi8n2gCd)&^ zVMptY>>=e9H(R*A*N1ohshl1xQdm-hG$TN6=15eSGBKHI==gXN%;|S>iQ*bgMhfvS z!SoO;B0GK-zp4c3_mfmb)7T%+e{-J~=W^<3@54z58F#gw#Mt+WqwDXjrz#O&;-A-3 zwY}6_E5i7;xIFEV0Mg<9Lq1EPOED8-0+Mq@W%X&H6$r$8`{H?yIc$IMq%Z=9($IZj zSm=zH=NtBC+Qi&9Fn`!uF3L+GCDXHlkqmLS)n!MYId%$udk&q~SRWF}qzCKy(xjX= z$>zC^1ArF0Gg!M3a6P1ooXeFiVnJp$)gzaUu>E^OVD&uOkkEgv33u#m_Ge+f>*CIP zU)7c_h@cZ{I-B4KuX!UOA_NqelC-_%8L-3sePo95Ka9P#leHInbAYviNxPm_2@b*( z1~A8$FHAxX+FtDcACBdKNU92~C4nxoR5j12-s0DBw$R5|5?RJ50lWEcwsRb-SGKc1 zQhAiqxcjdjJPbMTazwmb&i?*VET=&S64Y))H!$Z3ig;GT7g6@$dl!H#>gv%H9tn=% z{(%9ltXIkN4t0?`{%w_&G2BgN;CZJI=r~QQ*-t2-K?mr5%F!J0fJdMKRr1gmiwg>Z z78*nr7i&n;PRaFvRf;evii@W2e6dv*A^BpwuD~75He&d$bJFVj+4R*zd_0b4!kl8z z?9U89vK^CMIcsxiF)Y)xa;fX=3;@VjWx;q8&A(6vpP=wAdmT#8f+o?7#pMSYZ1>8{ ze_6i|&)+G27-1Ob^HE@V{;R(|i1vF&EAKQioxqgy(v%1EH37**TR%CgLMXIItAvLZ zxgH$BchNfSr=xE%ep_RGgdKS~ECs5=PimiPeHfcfuv(md}>yD#V9_z>TzQ|8N0O9Ii7wiD=Lype- z)7;!#wvnG)GMf&aqDQrNSf_SA)d+awr@yv~zu=M8MfM)(y_DU_PeqUjUmxK9#angr zZrvx4S8ws~t*z>mU~VS+TV>^C|GR@~*FONC2G=9+{F_z-zGAK98Q-C)QFIPV%Szta za9MS1MSb z0w}TDHjC$6RUPKuua z0FoHdi{hA&ouE<>GiQxFM%FF5Tr326TdSg|ZH3jVp4?n6>}du`b7To))w!jB6Ie0L z^^Bz$um30U7|f1iQnRTM>$-I3zfr#BBJQs%RN+Nv9mnL2nLw{FYI8dLr)1=O+xwON z?yB17_@okUq>lN}SjoBE^t8f-7IArWnAtk$?M2)6))KzRU|kePn52i*VyegcIA{E1 zQLF2_G~QXe8HAb$=|V>E%5~ED!KrR=EcB7MTEBHY>!l9!GwTXQCdPGdSRtUKR|cD4 zTgS&{5z{-Z&0hoLBwDme_W$&|ft@)X95j zZ0!21Hk>*FqI4c&F~(keMUiVU{BGL!V(z_X+%|>;9gm5dM$Imp0>#C@(U}#|*5n22 zLSBhYY=xI@0d%Z6_++XQq)v#WJM6wktxs3>j_qC+Hf;8zfkT7LEV3nOb#h4hA8#}U zG9Ir49Bx~hDTTPh4RuZ4=JT(4tgC_;gorBW-*eGtT*0m;r)}fF?&w zN&rW+R5qKgC7=f^Iso#a0CSM84!_sRNlHYPadLI$XYgr)cOAz*t=<5#YTMXf{oaQ> zjse?M5=tfw@XK)j@wZ!WG;(V#ev7G@8Rv@iL7 z-oS6P<~o-43N?}&q08`rV8A)uTml&$pO7#|F)PIp00>5IZtjhHqRqHDk_0XmgSQ=y zu?S{>eaYGB3xmTyR`Bz-{+Yb+TsdifZs572X;3UgL+`}d&>Puk3(Yyo9|{JwT2!Y3Zp{Lm3c+og8p;0+Ydn_ zH0W4Y0L^@Rkw7zFOv2u_dr`xvb|^Lf?Gf}0m&OfN-F1Cf8;ft@WtSf5qNp7bs9oqH zv_dJNzws&ZvThEadmgT|;^M`G8Fp>$_imO?awnV!^@Q{wJy1zo>>M6F(O669y!mD` zTQQw7z1q3=NceqSQuALdW)5m-t;8Uny5hLL6o9adVkoQ>qCY_AWx;DFmzST)P0 zw^SF~Ovclb8qA2HLB9R^!F2V{2Cm38b0Q^WmN1u~j8suSm7p)ft8gzKt!T)1SHo`} z-Y(G%&P<&sRz(WH;QlJqgiIevujF5&;4im|*e10&0xU4Fo-^vOusA)Z#}!3aT=G7+ z{`zpSK*j+TLK=EyMmHQ57CgoH3VtOmlbxG;xO;Hl*ZlBXc;)iUiWb&Av=QNM|2JAI zBb5%CKU5-t3K3DIp&wE&)=OqUr%bXA*@?J`ukO4B38zZ|_bS-=5FXD}$Tx}6p)-ge z63!Y{B6e5s0PShteak}zoAK|Z_a}lhPVr(0fc+ijL*;!>RMTO76-0ldsHzyr1KCta z$4~{&(4dWNtoo7Pkx$2Iu{cJ1Noho*1aVLxG}3kCyJQjqtI487D>-n5CCkk(H{rcal8Ni0sco{ zFbY;3+eSytx-OG~vGM9~8t{nxW_gh^b#!p>zR50g8^bnEi;Mst(nU(5Yw^69sGA(0 zl3ik_8<-k)`(pk+bO$`;O}$y`kamx1l8W>ukLb`j-1oKHD4A=!bT_{HmoaD5RF`BC zx#o;O{MotbjoXG&b^H3*Q5qJ?B;%pJ33FhVteSJU;(s7Mq40*6NP+_(((d_E)A;D< zTUAxz>+kDRT4{$JmDO$fFMal}llYYJCiO`vDM4sCz7)u5`kq_Mi|E2VD7W`;cO?w> zFW2<`RcXBEMP)`8zww`a>@f2{BvoX*^%P{WL_{2Y-)P0D^~xO(8CQR|c&mBk)B5Ab zx?uI#OkzC{qihz2i69fp%MT&c_gy(cVB7S$s3@ayP%ZtN`0p5U>E?_hGSJ|&&XnXX zQnOFcj~B0*Yy`d(yUC(~yk%*~uPS4fttbMfh9)4Afi0?zBecODEDQPM2P*u}-JQ;4mdl4QIrv7Fl=>61oGVAk`E<49YqZ3Vo?v1(o_8@YD`ONb4+e zv*gX=J`!U}nI!A-kld@LPPO7SRl~ULAK|d84ZZjHF_Hb5%=swW?iOrZcKTe?@4nqH z;k`WQO{jNV+qU<=dp7ffb@`1oOq5nR-T8k*&H0j&j4{(thNx;ykaL{2#odoObJq z@ec;0CZ*QWT=4$QK!deae&@f-VI3n=R+;lSTA1USSkN1aP!~f_*q?u{I?mJeCrGke zy^^o8U)ACFrmJq9le5m7?aOu_kNxGENolg18yCg=XY<<8<`q+#9myN5&AiRVFg zEnUS?(u8uk)cVg$6^EE7;E;Mn+dp2TXJ*BX$0?biUw8J)*bMnPsVaSIoornG_Ff}9 zl^_t2X=HLTK;q)!L?3s4$bu%MtsoKk>pyK5ww&n`Qn8RWY$KMFjvAF z;azbZ+udJ*4u^U^>ag-!*7DN0*AQB>z(l>5B4orbci!}u5F@)x%Dd6$vJy!>LBdH8_T}47i2LK8AdM79C@X7xLhwn=k+;`oyhrWDX#-PvGDc`k z0ZYA5MWz*ye)63mNRWMfApZqnf!r z_tmTCmdo~q@c*>a>@(Baow_0NI60U$R?h@R>X$DTFbzegG14!9S`T7FzDh?#_pSe% ztrYh0{=HfB+)FM!S2$YqsZKyb3KMyzB(o|ASSoCwi@fw5EoW zWE3*AJi`W6_~ph>RX_@|qf zYX_SZYj|JztjK;$OycfOu9({c`{&_6`XV&y{S3xncX_@pU(S2YE8!jcFXj+4nU5*- zF2Qb}GGNF5w~##9))Hrvmhyb(0H@eQv2gOEf?~fq#EPbY7#Obn_vht1N}DwYmBx^0 zvg8u2p;hQ_|K z&Qjdy;?<8fB zq&%h_rqX%gx!QKM;v>xxLSy%_BpRNA2#KU6vzWjHlMh`so#gU&u|99*IZVb^4hS~r zEiPx=b>2IlP8@cR@i1`bA24q^ner=bfR3QdbI{7nT^pud&xU0l3Adu#433rKz~?cl zzMcy>i>uuj@PDAE-sM0eL&DAUSphmZek_8n&agqDnu}S`S-lMFU_%hD-?>1?O~TV= zgcm2PwJC@ZOJ3L2GaDpN<3Uu?SG)n;|DJKj-GL&@>a_a5!?JUC_h;vqo*o|C1yaSD z9PWgLQiS0_=V5D~Q#i6Bcu}1zqL?uma?8JtBQm+sqO3_FIDPP19GfP~cRCFD`XKKV zfG08yh2$pjofF1BmA0^cA&xe&pVpMwW6q<$zTsHmvKY`SVJ>4DDUSO8nK z#Go>i#oy)fy;t|O(;CEVKl-H+azC=V+usw6aC-f^WZI+;gGOh=8BfP!O5mzAP{|e9 zjSxz)PDN}Pt&9DNJkjE-S9$%=?DuK=u)Xt6xRV8$2?A?G`S!7B)7}Veo02W5k@@?Q z*++I7>m0B*$$5VNjDr7rsa?AfT4213IS2xyr)LU$|FilpHxywAD>w@s4J zzou!*%BT~jDHh+_EuXb1784?mt>%EbLj|@ZxKbOKs=?tj*S#)RhyW=pER;aTR?f=p zc|FKu78^-7H|yaw5x-={jvfSA6A8$kHyg_q0@V9Uk)tSO3MM9|MmVKja&cMewihTT z<6>hs&u;jXf%sn_C0YI!UA=PlzX%_oyq%w4z$+WUF0Z!Y7RfQjnoOAkE~U^XD?k(l z;@_o+YRZ2QQzF|reKUUhMK>VC!Q8V-fY#UgC!7L@TFiG`^y+&u3wkh^VS|~hHfx&2 z>$+mFDh8$iFO;XbuvK$j&w}n81Q4k7r5i#ZfJ(mdcI{KH!KQQ21m%U`P;JbLnV}7g z49%AP^-T~wo1VuZ%J3Z=k*?qc10C6Qk#ePj_<+^aFM|dibup$QOU>Y}FeVr+9pc#U zn@n@icyv$;M&xy!r7&y-DwcC$XH@H|GZTV|X_Q9!`8tU)fh-;kIV|trV^1y$-idFU zisi0d-j?cvj1dFA?d(IksBi(ptDZ%4=tAa9{Tco5#K6yYxQA@n<3-^)(iI||wNqJ0 z-|4a*u7M>r7u2&LZ{>ZbKSCHF*<<%ZLMk6_fP=4CRpdm* z({k?FoYA}3pOaB3Ibpt*EV!&h*rZ=+Ef6;3l5N7-KJGjh=l6E8yH6gO178{ChRLtV z9<;}R%N4%i>U~y%-#&S+hsWWcxD_#Ft*A6uSkgkKkyO6C#kHPJB(z{|`w_duul5~F zdy+8ZOJjw$yVkpyuRkcFwXkDYtw?4k_~!dH7v@pS&4g=RU0BhC-)Sh8PY`CA`ku94 zVf$PqoY85Fy|uHOGNC!bWoMB(S&6$F6ZJfD3_$v3ULH>+770PU_{nP-L%aD((8(#F z#=!TodxPH!cIIt6JYy3Qt*&k}ghHopsEt1u}Blsn=>sOgB+==6-Jd=X$nQA zhR9QFh@icYef2hOkzZ5@ZWm~h45t!(48zi?&a@y%lMA7vrJWk>Kg+eRe|NQl6>6P( z+m+tV(~B9lKvaCSe+IJ5b-hm<+7@=M=GyB;c8rDZMgzQ`953!3yjONI9MoP9oknG5 zLIAuuPy!{K0rpCN!@QYYF-5UaU8m+kRs3u}C&H7+gG*cKz$rhaYI1nHNu_xEhvc{Y zD~*&*MeRj<1Dq(@iW`JLHMF?V9bc=zjSI_n)V}xS)HhLik4)mn)sFtl2P!nO5)hP7 znH7U*$$g083kdy-YMS2I&NPpkYR}H?cL9%Gz2|H@Gu+;&DLWt3KkAK*jxC6cZv-wD z-Tc$12qGaNAqe(wW)C9zXYydt;iC@{RK45vDz|no*$wpL{{9#LbeQG%YT$44_=?9} zt#<`|Ch3XXnlrt^#uoqD(FdgCxW78LQ$&ZxTSpfpeq_e?OaD+t^M7sr;)Lzz`Sd&B zeER=g0AsJmjpP1zQlwhsbswzpDcn&ZMS`MG$jQEf`qoQ2DLEOpG~Rx@FAH_wzD?L( zapZJ1xLb?>qC@WNmp~1o^!7mctfG;*j3$R=)cpkohz2J0r#08n`{B7Zefy%6H>XjE zbb(N0fMt5&G@WZteKT?7w<^5qewxYa1;e1M82;NB9{34Yf+kg!l=A+M@ElXYiTs6(tSd0{Su(X}j z;L1Tx{l3G)e6{;wdpxhR?$e|Xg)Ue#w~?SlqN|8*KoGc6>h^~`2mh%0?;*{14pHgU~m9@1s za5RqzeN<>9`wq59WCNhA6i6_h6f1^pN@3$?F$@^23d7x8>RFkUAA%Ue)D|BT$)Ma> z7(71Pti|Y!h<`3r444>QvXj}CU$?S%e99^baX8w~v`nAVPSf}=OSooPT~SMm2nBb` z#OdEmIdEj+M)Wu|3-bz1AK@H&JuIU+h%tx5pQo8*0&X*uxEOd&a2)DJE+XT>LPwRJmuQ@;(kTDfI1rHcl}*XyIV znQ41Uj-PrcOkXeU@>)^_+&i0%Zf-Jso38_b#t>aX*&_YMr32N+D^(fmYhXBS0yU%M z>I#_8A_X7>p4a~F{lYVKyjli#I(Z$mSg=n?@R8onEU-uDW{PU?)+d~ zN%br$oKerno3s1JFebgtt9E;0W&KY_vOLm(>mf(y!W`G#-!kTSrK&8SIn(ks;wvUf zD1_^i$r9*gG5*N>(v?=SIHh=Zt2j_N`5G&-JB_8R*Y)`jSCw(Q%YBUTXTTWZ4Q7xSKGS8vay->hEvIp!_#B;f;Mle~K{ zmuX4VRjkbLrw>vu&_VY26-bx-6Xr^?m$D=ZlH}wmgI%e}1g|S9>KI_GBcs@gw2UP< zgHb~YAEambG|<1Yj(q=y)HUJk*n%_%*SmKP;4wmlz4|7d`UE=vn1I`!qaaB6;ywbh zL|~7cgP`BTzv@mFj&t4iQ$g~$ib#+6+4q2}OV!7rfq>070q4@x_wuf$1xa&NSN)`X zjM|!F*ZtR<|4rw8w><-n(EP8O2eMii!_aBbA-0881QxVmf!H$mQj-)krYmJZG{~r_ zA!xY3h3;T&&0_Nb_xWpNMLk=3YVQvpJ~%tq&h7E-U6jSjr22OnJd02)moH!acqK=r z;+C41nc3q1@S4~2bq)wse=h3HH&Rzo0ovZ0xtLBcHTaUtZk?rVPNsCAOT6(6v0M4b z3t$>I+uA|?5wM{0@r&gmM#|4%xV_HN4Yt(d=jO(XSYEkPDg7^Yy~D%a*_nHNE2O&% zCjyeV>6I-jb0}G*X_~}Gie1ocRlo4@F9 zG+2}EKi~WYfc>!?17l;*qjO_+>9@LjTR1p4$i$%|Udv$M z(Vg>O%+u82v2l;tT6h3m0L*c}3T!C(^u08~v&2jKP4wj3{pQjaf5iBd_W_^%C?<}L zyY9-=Oak?@pC(h?rxTeX1qA4~P#Vx=4u8g$nKyvYz+@8j)RLx9rOH^pY`0*o2+PUv z=;K94Zqp#5mj$j1qoUGHDMmn{M07vHCw{s%0DH+teqvWcYsdu1bZ-%zL?2@288uSTdQUMWcfDuX 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 z z{jb;c2Aqxl+b3>BlII1IP3Id6lDE$eX{t)%qp^RvjmbI-(KT=R>9{8_Q|(+uR*=Py z$6E~)s!9c&{^0kGe;#ity)UE*CYFc(fU_!APrZ$(BI<8hdg6aRO%cjDo%%R+G%IUC zgnwCqHM7B`;u&mUmE)sWmiC>u7jItjjZ5COWI=4E11*zx6 zw-{={kiVROF(I5WlQ@L#1lA7HtA*NWr!F6Uo{V`?1MQG;~NE1j5xNfr7?>bzdZH)n1D{d6l~ewps|CL zm6IXsCI8=xU4N8Ey)n*V<+@2zqW7n-N$4(@^rP2TzsC9swV7c{F?L*5#qnVWCViH8 z`{sI5@+xRc{4o2_Yjoj$l@w4}CT#@p+Q0s=e^`EI^xz=X*7JE0fu4GZRNGv_BlFes zR1c*RE+5+N^m`eDdT77| z1bEXuel+({*a&9UK*-|RBz@J^A51G~TQ&^yq7&0i<=^%#MgH}iMUI~M*pyrliv+of zy6;^A>7Ap#f=`w?HPcRPVuJ1oee>ZHzo#g(>bk%drl#$}jh2HcpMBqOEzrB8?}v$I zeA2A_L7$`{<~W}kuKONFmoq;axTm<~AO7=Q(YHJF-K5c!DdQW3V#C75{^E>3wtWVn z45yfnjGWQtX>>5Cx_)n5V=(`HTfQ<@i3!hCD=1*;iGo>ToM(ARVM4}hRQAdl0}fm}JwQc^OqPY&qI+CKCLoeAKoOe18EAgcf$U=Di-HCQ)et0M_f;b_ zLbkbGpBT9u&F8K3fXyHiMQ2x(jIZn!LtaGY>)L5iuz$hEQyR*ES@7VPu%J+RVp>qv zg79am+1Fhw_l=K8={}r&HEwoV@g$h7k57N9Ud4a)<+92cuPJ-WUwJ$qZxx7r`V%q z$zEZH;FZPY%P|fsvWK%4@g_9W6a?g#AVS3GNKnb(^MkpOq$-n}uE0lCKFeQNIx4yA z+&J&>)LF{%$n)&0`ydje8@`?e3S?5uikM=N#$pBCOxa$!S3!&?+Fj)h|4rN5(COcjUouS)Y-UJrx!4pS+Pc zEz0$2#^Mbj02llb>-;(K2P8Zj9KOMV z&l(z%siXl`ajoU__hb8Jow|5yv7Wn3_{O*H9Pe{WJ*&NBopUbozDlL5h31QC{X<{$ z=ON;y#hFpbci7m`>gwjoIrR1<2g97(X%E?=*Z7bT%)PWZ-AuvRee(^+su|i;woE6( z%GcL-_qwZ@>scbr_)Dvz82Mxo@J;N$JY+T!buZfF+J@O~KMai%K>xf9H6(nYqM5Ss zZQ`bk9^jhJ>^i9V!6iBTN!h3M35RIRThPE(o#ElKH%n}gA#f(@>+1Ua(`-~` zS52r1Qv8yYw%7Y|#n^7aec}9jSq2`I`7@iwj2pR$c@mMu@$!@2w;`cVr#mU+W1kCQ zfoA9S4c{Fc81eHPj1A1|lX63+Il51^2)#bo9^F4;$U3~hLSV#UKVR@2IT>v&Nz^D- zVeN_`xSposONp-QEIP8FWXBU=C-K?o6~I27#_7yqBlnCeBuB|IgRqm?R#D{A9QN3$ z2(0i}dOS*n{K7xI#Nq0WSW$F~nveM{l^vC(kIBW!sWh;Y`-U7MmA-i&wzys#?)HX{ zBmq(6{J+gS4pK-rBadvmf=3{0<(O>p_{Av&=a9*yV~7$4s_wH`J{xmD-5?4t$)xOZx4MpzXYlm#wd|8MSI$guPJUZ9P-Xz3`B_6k79JsYGg=}xqQlz7 zR%SD+&zYx=V!>F;bCj`prL?s-JHIRC4}xw3bxf-e-cWAM=Fl@!Lp$7PAqx!Xb}HuO zL-7Z`)K^4th=?@i_7BUMy`5eDD^#xKQ2O3Rr!MEXLW_U4P6lBy5#a)?%%Cp1;NXzB z!pZIGp8MgwQdRze7aC_F%5C(qY3JQW0*1Lffze%~%& zxbIteH(rCDWDrD`t4&dr&D;_iUrK`zG|ASZ(1|UAfGRiFQ`=k%kg2`1RRC!KHHvZU zNjDo4c@}S7Y($g;#qGS)?Iw5Ql0>tmfii%}Wb66!YH)gfYHH&ngWqKb;W-SUl*ci` z#|F-GR@HDxiFbJ>DPPn@ER<^aE&%#h>$X7hc>eG%2N-Kq{5?mFJp8vB{S6vv91QUT z7_oONhK}F?b+{779@|6!8-1ZAIN$c+BPkB=xmNyYc@7E0!E%R zSeEOE@Phl^7!`xhzjmOm&;}?Xa_I)zTSQ*Ga05i7Z}|%F&4DXm@!?YwwKY7mW6P@g zkmn&ao|c5v9H6u0hZQXV{vV$~gJqY$WAP3KMbJq0D;1{?GLOKIQyhP6V--neJ?DrD zR2J5}U4G@{feek=Yhtm{j8MMU$1D0golO;MrrB zAER?E<_ml8QD)-UX0LY4KlOxma8C!{kcgl4b(mr0fhgN5OZ&I>C4v7>Fd?US2S;gq z7e_cKL#w}0>RUAvPIe~y8VWVHvSb)Yx$mg%Hveu z@U|ZBssIi~OlV;(hl|a8Nvlc3OFL^Bq6#=JWjP!cUZ@a)+kAm4o)J`!Q+>`=dGXPE zWU0~ZW(3UgWlXT0?33}s-O63_npZ9}<@9aw!@tZb-(e3T?bK*yeBw`S5m&8OCl3V0 zIz=Uu=b3KdXMg^55}uGg=PIXh%z7FUZXX4wKvfAu!D(dw(M!$o@dmP$k$mi&K=n|m zJ7nOh1%QZ|%+@o5h-#k-nwomry047PeP3Q)(tJi*UJHN#9_cl#8}eE?y1eyl5Cl!r zFeI`mBq0l;U*m-Tvmb1m8`u*wkH_vwi>t5P1;Q^VOLH?Y$P5?~Hg&~klYUAp2fHX$ zo5~@<(Gp$LSQdlyH0n9EMx{Yzuu^{aZ_7d{QOVqfh;c%#;VkJZ< zy;oIrrlV6H8Kb|Bv}b0K#Xy?z_Rs-OFu<>@qtHYmyWlu>kyUrNM;F}lcw74m&Pyj% zSC`M6wv~s8ePz@v*3ROYdhaicKb+*Y-o+9S7I=UekqwW@5DDZ3n57(yvY^~mirnj= zha)FHR3D8d4$e9OB}URTX`{o^aYE`Mh#-V9PLK~fhr9RT)cux;xX-H+bjh*GO=k5K zWKj}v{MY>TZTrIVbb1y6*{sGclO9E|$H?hSiu>N;`5~a%8lROp#bXbxQX$xX1V%F( z4#BZyl57}^idH$KIiZ+Z5LwlU;q3XElToVQvG~#s3)-k;^`)7X1rgOJBNYcVjP1ft z`012k!d(OUDiP(>b-{f25~(bs;yqWhL!Tdv_15{oLL-V%p2z%eSFW6RCb;eodMx7y#~Z|(+kT5e@$+B<&V-jRx(wPAVx zpm+)@C?6^PP0<@G?*7{bl(t-xt@O-+scfhyI=H7X(&Q7ltOgC)*IN0_FlQ37Jd87_ z+U{1_fv5L{eR@{Zu-ffgSqtK;qURzM@g`Jv`xnc;`f}WhiXogMq7NO}qDGVR$@c<>b-#C%m?70)wj)7oe19$X0HzNa0q?+w| z3*m?{?R4}76v$q%&KYJC*l0Z6fH^4-g|m^F#e^_M3gZ}(K?Im}w4^lRkoE^Z9@?dr zvg*8@^xOl5(aSFZZR?`g{}%0iaBIKu!S{>ru$}SQUDf?_`yF!1jL()~Q)lw`3&kn) zem=C1liluC-CVpRu7K_peQP{Ry=St_*7l8Tugoi0$$2Aj)xpg8m?ARVns0Ek`AY_n zit_Pzk$veY{j8pUFK*zto$eQv`yP^LCHxo$VV~c9yFGQ0EcGQokI)#dv6k$w z`1FyU4=0?St%3vg^Z%}gIw79==4Oi=G=u#;E15rD0lw3YG?K`Cg_8B$*GK|r#09-A zM6HC@N^Op_pPXdoBjGdEfVbO`{maOt5JcKUzvi<%hi8qBrdEh^C}f&=`my$F9yL?% zY{$lOGYF-TzP_2kw^|~0nqGys5jUKJarx%bDhbj>9o9>jd>FRtzLNrt4@(c1OoFy$ALi_^~`720~bCwU++7s9(Gbn z$w2{7{E{G3Fot4$bpKcMTnIY*t3@zGCG1IxHrg@WitsTNC<6^e+I>n&s2QU5l37d} zELBoc)TkZ$w0oB{0R$R0(e|#gYt8avyPt&4FBxQOKYci?(|^B6HS$;3wJMi=PZl{n zk9I6?X#ZIAlT!9Y(ONbA`6GaNqWoG$87`Y^CUe#6zghG%c5)NjswM_EWZ zK1o9lW!q^FA?Eap_vA77x*YtsRP*G&i$iK^Dgb@}xWdJg&Le;#N=M@KV`F-0YcC@` zvw7_c4^I63wU;^s&BcNZv9!){xPW`C_3L6pw_{<(6LY96sj7??F+1I5KVau;Cxc$K z3Ei*mex~1<_VYP#|smcsQpoBAd099VIPfBR5sYJGYSz}&q0vf5YT8YVi zvbSWOxZ~9-k4J7s%eg*J#bkgelOh-9AmDXJyq_f{si>e6@qFv&W(fkvVQOG22Pgp< zsT#7VRA%gG#p<6L!-xi$byI_ibg(2RUIY`1Ca+PBL%vGrCNFE zSh|}=NKKXW-JhLjH?}%vAPX@il%f)tjzMaaC}<&-MKI4t+(2+(I9Q-q)0-ikP03}1 zC6tvF^^}N~;n8b)k-Y-t*P~k5^lZ>-sNZePsPAPk!@Qu-Qh9~g;ly3*DWT*{IoEqC z`(r~$_0J4?-`~rzKK4c3wmR3?HKNWLYX_b3Btk8MR1mExvezOr+ywG?>Ud*pe3%7j zI9mz-v>G0J&)-rmEeHy~i_vwYm1RJkKW~i0Kub3K=KKKLH;OtXRfoar@7mX*&HBA= zu)^o}vJ=O(L zK_~TT_u#XG37Z5ZJ7M7u*UYKv#}p zJVdr6F553gRXiYh4w<#@KzRv7mg3`9O0fZvJ%uoKmcjBee&Fid=-4nF830$M9PPOr zvCplsyH|MeDg-29R~w z$|9)DwNp}nM0ad?Rh16PZCv)rmm~lLvD-AF_^zPNEG!9Bv#_7vAe`4JoXSo&ir!U3 z{)`V97=n8loCny>qI19RA4=Tyzh*gv+kE*aBY7(RoLil@*b!qlC(JT zq;AAnU~!HJw{ug8`@!-?7Gba((j?$)%_QkomJ3!g5MYja3gg(&*HNTI%%u%bYw*IN z5Cdblp#Av{#xAzx8gI0{!~DCAgC$q~I+WJiVC+$XiF&pH+3|22J%OSAm(H@U+`pHS zG6=idSRO^(YvjIXTg3>%Xej>^rwEc?!~Xsy1{WWvjT20bd<^2z3kpKeC6JerLqC&8 zvdRKZdRWQajCMQ~0z^4QMKACI)KqKJeE41o6*ay^y_r1fz5Hv>Ua}CJi213AISyM5 zUI;NKiinb?Z-eoJ<&y1lL0w9Pk&zG-1e#lW;pge87n-U)og?-+DYCp_2z-~>2p z{l5Qw=Zdj`zQqyO(U$-9GoINx*Kf7RJY_t)U0xfgtrb2;j;Q#)cir975$AB4{#E%R5b_CW~XnVc+l9 zuyWY@H-6aj=0XdnUglp#j>z}wrdsVGO5A>GyLK_>zklT=PTOe#vi8!=MINbJ6cjD1 z?rW*lRx?$bZ*k*4Yog_N9`2pN(s@aHGF<>`vGrXF51*^f)mEu+!e|3;MGA$0r9ogM z3=#hm9sBYl_THnrR%7MqY+KzlT`Cf~ z_NLf;4m>`e=QQ}%%UupXLQg}hf$-#+zz3^e%mfKrSJ(ug1PyX^4GRt<=dGu?%_nua zzT=-%I!Ru+ zjdZ%3cKW`#!wC%Z`Rrvy>+&&v$0-I6J5`ci7k8w@GA>K~g}8kXS-5>>kb-7CZrIm5 z9sjMbmEVtHNsa)WaKwv zynMRu^lkh|p_sFuw$_0*i*xj+e3L0}ea+7vs^X%eqT=GOWp9J5f0qx4FKFqYw7T`5 zn4h*ZOp91cv9JIqKzv~m^&iidHy1C3{ZP9@Xh)Yg2fY*;3f)PP-Ow|wA+NO^&zXn z{#H@&*Fewd%XdHrUp`x<&+-%nMRT#tpYegNfXg}2L*2tFRQ3*K)n$?R5BJ0dJI=2{ zD?TUNlfbXMA0KL`Fslz9PqJ4>9`dX2rt-Ox@utV0G1LV0-G0J*Z|<;qUyC{Kba50StZb@Tz|1c~rt$NsT`m6S1*i#7 z(hw-PA}S@P&J@Q*BFr^}J5zZJ-Z&)`M#8928o!t^k{~$gbzlv0=vH#l4Lpmk}h>=zD*oe*0aaQXfoN za+Fg+Eb+ZIJYQk<^21wG+rwqwM*lqumB~GE51@VV28l3Z`+9sQ1c=VBeO)G;>CSmX z9u}Rh!)P;-LlYv(0|ndW^&duVVwO(Y1T~dt-)?vn-Hc6a|A?V8eq=v~i_$8|O6Raw z1dV^{%JL2kV2liik{f@CO}=W6&P5u;LUqU9=xO(uMi!dHn~`h$Q^^d9P1>}wMh|NT zqj3W?2{~VJe${59Y<^R$*?6=`>R+O#FXp*d!thH%j)kv>EQ1-J(HG~{O5X>@FtD_$ z)-2M;o_=0c z2{QF?$=`FwPEyO_2lV^o4cTV{g=y^eWiWVT0%iap)pVzY*U*zl{tLWVde?c@L}pg^ zeac0!bYjNkDHiC}zYe?HhxtSQVbO=#olnf_!LTmJfqWEPl842(M!WsO3_Y3_z+B*1l)8b%&em#6(gWIXP!+kuMsLEv+U)c>+``Q|^%`}Q_Orc%+x z_tlWCOwsYsa$cQtzXFi04?%{WecslhIP`qDIc(Wg)vCdp_)F{PbN61aV`2iUaVczf z*Wei|hkMi?Voj9KL5=(k0YSC@!ucCL)KFOe$M)law`w3QN*olng&78M0$BLu28q&C zQ^Z3MST7)j6Bp6?(FLBA;f8+_67*Bwwqa8Sr#1a2fuL{uxT z?B(~C`#)>N^pc*(?~i>0X!2N;NJ0tGxM|n|J#6d=@S^&6oAz4R(s+yfNkgm+~#@=W1kM z3URBM*UQsOL~tmuEpfC2Eb>2|B~N)Z9~xRaTJ7GuUico2F*$&6tPHrHKToYI!hdIW zf7f>Q|V=H&bt$F&?^XauxgZ+BA48aY1q2#S20~ zo#-_GlbVb%a+A`w?p0uT6a=#@MbD*NSDUa)J?HLSwV%uV%Pu^0R!$BJ9~9kH{p~%0 zG$92=Vqzkbd@b`QPQuR>#Om7w*2)JFTovUQK-FhG3}m7K?-}NKZVJ(W1|rMC!!SY- z8Zpo6kc!D5wfeF$0I+H94z6^7R4xMdn1i^l~Lh%Lo8n1GAG5vHm1=fyCbJaHVhgL4drq9EoG{0s>Co{jgypz z8zFaxT#P`fpZt$8P}mWxClwPQoE%YLA)0fRh0lm&F$s9aAbHv*6RSMzxJ_zD$>g>l zbtLlusDyq^c4|yENS7!A>^#gib5d?AZHzzaY*ZLs*#2iT49#1CAGgr^Gr7)1bkr_bfTH2_{ZO_eB`p%;D?)wWSqo_~SlQn~q)_(55UEh8?EI(-r-jE_0F*WT^TW#m#;*hSrM94v^NY=|@xy1m6+hG? zZ&LZ&`vj@rJpkiZd1@)^QE{dVM^EqF#mdUz1<>LJgI82l0-b9Xzu!FulYZ<3EFM@e z3M_sFeLX#VDA0!)?Q0wHcTSFp+lb77v_!!s+t#-l)$p_FcKYFx;f3P1;SOmfP?hX| zq_P6*^twOlWoX^X*>9#NHfRt4D`;gI8VT3d4un~IO>XTkZ9!DDjwFiMU}Pr{)<2OWRMVjOQWY-99mLBRr23K~v&gIf zc+Ytoh8ose);c){Vt>=%<7uT?4_7NNtTb2q?0I$Ri9T?yz#r*$n`!w0`jxa--K`e1#x|Hv0uI# z@yHQ#_US!kzP#V{TLrSZs1@`}f8DZQAn9%EA-*`c% zlmIF?Z7gBDmg`4$%qzu$I0AAL)%wsZfOrJLD2FFCu(FetnD2@#b(mTbaaIRFtrW;9 z*h>^nF*49ZexsF3px7i9e2wBsBS%aQzDdp3^daCjy-xeMpW(1jsx$(-3fzZ{7EG8~ zG-Z5KrO+t$yQDJK%p=Fj7QqDHekvyTR0}=H$Le^(oL~==&L6`3i_&-nAf>`1(noRX zZ1njT_W<|TnU~qlV{h3Al^g*3{q7}Ic@<^{fDKZIBtXFW#yr^~5eaeMbli?ViBSo{ zG~7k@?8%{acy1036_UFA%3MJi*8q+1WsMpSFyQ&^$TUQqn&lHHGg{)=`(q~w^ z>fA;ygT-AfTa(NSsH4IGf>Ug`q0dqGjIqCOjN^wx@8wAWl}Q0)8se+!R@v9efyMV$ zBVum%6I^)r4{x9r6KT(%Kd0`LRTr_2t}#ARDl4Ng*Gri(@>l|tkFd@)0BB#;a;*$H zpB(c?!~6TY?ux`e{9AS7@gidcO2%rPR$73Q!`P*t<#VNjdO1MNcUhx)twoieYU`S&TUUb!-S=K@wXHEp)mJWr%;o6TMR3G}oJqc5swKD_UGRy_XRNWM=ng+Wim_pqkZE@X#`{MEn2 zrDdd^K1vHg$;wDimS~cNV2UJ&3MnbUPt=_npef21&>}MhOIyhG;bjJfCtx4{$@H=+ zA$ragZ;1!efoyc@s5q>hYBDFxV2u!Gh|+ zf=@u}_UY;=)UE_Iwi###LObZAkI@IIAcQ)kCoM^OQh=RBrcZ%f-cVG1h~lmGQOg?x z{h$s=<*et3yBTf4p%b9f=6)YjEQwSIs5^zgQw;dTvZ zQog%=aYEf2PoUUE6~xGhsbko5_|*UWd@T9S%LdnTpWniZJ2=6BDSi(K99jni_Uv`u~4Ks$^A zMW>E>8>PO2A4jxf3j%pGmEj9~MRA}u;TZvym}wYIdOO^80j<~iWyV+1(L3gmtm>bMNkN6w#D@(m{ekR_e_9=(dS6g`v{#a z>cS}!>&34<$oHE|Yl&#J2kN{Y^J~`3vYdfxePl>lidliZFMZF#g64rF5dCmz-Yo6>c%JLO48Q||on#_)-uR-bW|*w(xOtacSDHVP zJl%OO0u2FLdWBRb_s@>;tLxx$y#?`iX&a%4w8UmI`2i}xQ+PLdWE=Imlot>&vR*-> znD((ToSFBYszu<1G}h_noT9k8NX)B(rfdJtOshh~?PTSbCfN z=Bl>pp(xdm^rV>n?zG};%{;ke_f&vP8#VYIsA(;`)FUnnkLLpPLkdR0%HW0f&V zB}h}J$;E%8y=Z0=bz1->UF0PvQKFF$hngkAm4JedF z+0#fJDw`OHPVy)_?0>#WjHMU%vGDc9`z4=9@C1YzPbJN&#ICSfh)HbtTx7+2#HJP zQzCgS!~pLae}s1AJxyqPtfhUhvt^`cpJ=ihY9DB?FKN+P###iC&En_KjZ=@(rP@`i zwJuE1sr$LifL^BT*0QYNoX$AE|45&aoxc3Tt}*0tEKq)cdy>b$n-h@v%r#Rj&mR2# zFv&(v8i^W`I$gFOu80VY8|zi$ehM^u0_IhC;$W3^eC6mwc}&zuKUjg7{+cg$Z;g*aWFO8Y52%V@D=-fg|L0@sj%j z@F!&vK9*RWO{x?l zETc_f*edL@icmCcoa(EhR&rkmxSTT_D(GhW!E+61C`N*^cHDAb|3*!sWOw_n`hyon zkgC(t^1f;zL|Xat8St)hi;COTOm6@AJXoW7a_8s2EBpi4S*c9s1z`~cw_i`#l0@fu zk!?lEQka|Bp%P66*zI@E@Z9=-9{9pKi`WK6vOSi)|MRLg%``v1Zkptl|C`H}nG%VY zf7P+|@RcA&-jhoKM%J&3seuUKeEwsViQ(sVwB#9oqu(Zpj(ZlT4?p8NIU&sta zP!ZtOhcL&5GQTKEFtc@TZvE*$D(rvxsMY(9u&N$ZSVm5n91fC)k4VM!<|#D&#-IS@VH@*x4Js|k^{Bw*n?dh48cMfWCKPBH1!N}C;QlTF}rsl`!3=Ctu zcB*J~mkAGb)LiJ2eTXM;aRB&FKPz`TW`906cJKePbujM>pfjKP?2KJKG5oNRtV2%b z*fwpCB@#0pkx=UhRN*nKtSRdyWG*0k9f}y%gGpKwJ-_ZdP#%h!erqEW4%5&jL?$#p z2r0XaNIu+(9$wm~knr&E08;ia08u_XXMO%{HK?pCGM`GyGar~CCC_Kg9TvjC|5bma zr>ECP9CO0d&F}ZwS#%)qkfG-w^Db|)nvqb5DYH96vn&;gwvyo>?n#48>C?VApP2^O&l)KkT}TfXmx&t_U zBUxBE;Z(2k{+KIZ+bd&6Llu>6p27&;PVJkm0XMqSekS=FbrEcyZ9k#S-XNIh?f@WFL}Z!@B0v9_KdcI-;x$ zV}wOl$%aJnodDno2G2ihKdV9dc5v9&eE4Smr{}fPm891aUHLm3ABS&n18P-7`D3YQ z;|9G4lxY#C>UN)z+EJPY%xI4#*WUi_FI$oiSBTActk_=;CqQM+rX`Pex>LqeeglRd z4}p&knhMO>1cROYu0FMH{V--RwP8#iLD1$oZaUoz)p#G|3bGK$>DW}cUUZVuIrwTq zhy!B>!ZnvvyU~pQR797n`Dr>;zDhWX;I#$lqX=ze?U~6<#_Yea=LO}xjKmFQX7>VD z5p)3|AU--0k!%8ttU6{z^C1N&I~t0Ciz(N=DxSgfl-E{5UYaT2VS(I$ObVTs;k^1J zn}N^uz9*jzShUu;{_U%f8ogcf)Z-+gkg{=Yh%kSYQ%<5Wg+42n<_O+kseVi)qDc|? zI}2kRfG^%O?W?LDzO+uoEJ~8L0mPXEkF|(?VV&eMTQwn|Ii_eKbDl2~JIj?OSUpS9 zZwN-tG#Fl+uc#oU$*d;FO9aM(DksTKlJr;SM=GeN_+MKeUbf8KB4WBN%zF~TtlbkL zO7x79H8dCp7deNPUD3^l;)h-U%lIy3#cy{zw7X2yl8$6IWiBtHwmuKSf&nA9Y<$iP zIOoOpW=Aspj)^62G$p^gpI>sgiT@NhsVmE{W%+nHpN zPM`~YnN!nI)UJmoWsdvJkTfh?bweg0si#W`NvGI5RO0k>UeJ8eemK6yD9S`7UIT&L z&ARY=>wbO>@Uw0QzOojv4wfA|a7qEM_OrfC-0v4T;l!DA<*x!d+uQ8JOL}^wJQ?He zVEk+s%Q~pixSb~I84ggJ{d|)It@<;-3I>#^wNRO(P=Hp0z4=$1oO~R(g#ueUfcObi zbGiZ$CRDbnGQJ>Oh2N3>h3_ZWmtSZH++Aw6EqZ^6DQ7}4|GP`Oo+;@CbfHNU6hx^a z93D~1HAv@{-Uy$d^YgRX%WQwY_^%NIw1T$kd};Z9=6E)6q^xn|XOVgq-FS~7izR0p zuK8b>p=Wgd& zUjpGs-o!qtP~e~&9UVQKtFwFimc!f;-_-Sj#rO}cDl}tO z)X-0bkcyp-d9R!u0Q^Q=#eY4ymupXqJR9`%{7wVqe_xN)l-h60e&#Uf3hs>|O7sBf zyzx>@hJ+E*PSy{)uvS+Ip{&$B5e$@UNRqNk2G!k|F!#1|9S-j$Yc%kvq&So#zY!{ zHmjKuJ2_*3fQtAFc#Z!3I?0r2r=9&e4ncT_T2sl zv*1^j`!_2WZz2M@+y+N@Zhwz@cvGT%OF!zOs(%W6*jqJXxGA)&cS%+o*WOs?zk%uGA^x19(MQH+)$o8`)Wir6?6$ zA;=^bp*%6tY&oh#OS6wi|9RXtx46))TuKA z9redT(*oJ7MM-djqlNh+`bwgcpTVvch`*LO>66v;C@6)8oIccCY)ZKsZTYTxwA3wn zugr^%5$DxlVJpUAD<W+DBR@?+L_F+CKvUwTc zajt=>L29Aq$f2`iEVk?0eJCrg}pyOllZ;?K_yAteCtLH@q+E zdAE83bHs@L{AI&l29tb@*hRFp5x9d;am{%sOk0ve{+&sQ*D? z?(H9j`|;L0Qvc&;LQccNyMYGCbn0PYYr5wC&ZVIffyk*%6xY^yo_m=Dlk4l`7UhtlMq3O6;h>h7_y|`Z#>jKB`A% z(Q=)h@9P+|1j4kd4>on6+k5^k$QLGII&TIF z;+KZf7YNK+gRkH_n04?=l18c6UUH)O6jGS9DxEQXClX%^ z{r}w6{*WXNSRj`x66_2-kfc}ln&dz7AbAI|<)i$_)`0xQ}Is*tkW53{XNLHYy8kjiW z3T9SlbE-^A*Mx_&VY{dkHf zDc!en-TPo+>i7n~P;8~fvUBBf=(T$B?*Gwrl~GZ(U34e`K}n^%JEak%Lu%kfQh}kn zQ(#a)x+El(7GXeQ2x;jWK%`-4P&!5Wd;IbF$F;;Y%-nnDob&9x&)$YK97MEVK1Z2u z$=aaa8kFbuUS!e`E~Cu-x;f1n=$MkcMzph|3O-vP&ZivQQGpN(4Uc>2Lb0?FVAR-X;``c`;v*|@?eP&AUEl+s^rbh$;{doHHFk0 z^ke9$_l*e(6VfW;t`E%eD!{W`C?Nv_HxO+{`>VjkI4gt@L73KvwpDXw=@%ZlvX)DWpW%7l|1^b ztbrZxKDJ#>@;QAA78qXRjyf*;k-sbNt7m}-Q}oVD&2z)8y0uc!H5a@D)!YIE>t%~5=JcC&s9v${@1N#q<8Fq>~amS*T{eu zn(oz0+=LrR$QR&N0Ue}fNt5#X|LK_X>Fm8)JnX)l9q^I4jqZtwrnXY;z@HqA#rJLYT ziS^1RVd%g+#)W={wYu*8*w#q5v0kinF~#^iTqrB;=S)w>C0$teI6+MsBZp_UAEBq0 z-e12ivbRYyAzn3=o&_;f&P=5mtgp4m(P;F^MDgff{;Jer~7bOL3Jw1y~4BcI0aOGQ2 zS_^K*DT`?8iCqeecEd;}HcvPpJrLs_ zz03uKSSY~^iw-yWPByrN zV1r@JJIm%&nV5oMdna!WO`ei|d}bzCzVKEfE*mR}bRY=$E>vB*`PIChtx$E~)k?Ga z=yj;}!?+JygcWBBpL{+^5T^bmYTsJvV+i`-W$*WS+`h;mCMtrp(m*5P16kNAG5zBM z#4_G;vR+gwhdf?r&)cI8V!Zsx5h7Zd>ldMCNZ`B9he8KhECn;%^d|UYA{im_h9#DwQx3-JBJ{R9XGTbcV9?NhjFfT(f;R6$atq&o<0M*sC z5_Bq}4bOnCZWX0rA2DHJXr&==QcA5cL2Sb>gUXSH3YhR1<{jsf6IOLsj=^`|W=$x1 zs-J95jbwuv)7;2NUa8oi7#gsi{7&2z?Oe0#i>J#qY3B{9f%MkkhGzHPl{PM6U393ZmPo#tqOtkO;y&I8y{!)qg z13Fxo?YXjoDha={y^O*^r|VF1E5b8yheOc%J2_h&Gt$ImdpL9MIL50|m(v+UTHaiq z3CDP+3l&#>Y!($4_q)0D0dw}3NyoG2{!v`Tb9=rBL+~`%8_j|sriSb%)bTQ-n#H7B z*XslCH#{%OO7m6~tQ`VZyQ9G=ANWYGtgOh01C<~Q2Gb~mmeqmiE1>R{|BX)>K--5h zGMi9X51>~DX`X!P8pfqGq_W^aCSC#u=M60l=rXKP!OD(<>4 z1K8^R{wNV(7Z?Y8doQLM+9q8aB)3LvyA?Rt8`g2G(0TPcMpM zV25H!Rq5&J+Icd@Rnza@y?f7!-?!k}faQPD&yx6=^{Ce!rKL-v7Og-h<8I;TsKJE< z%>UIv``squ_f}p|rJ)m}71HEE0p2|`yv_c*+NBGZVsfle{CZc)(7Uz7*)-}`6}fWP zj*klQIAcgrHn^4{J|1n0X%OjpXB8MW24=BC3G%F8R>%pFn(TwVe@ZLsnP?WYgsRyv zX-yVm>(5^aGdFE$a4aYAI`P|^0r&!esOiie9_)i1W--<<9`w;h@%Is4S&xgs*`8Uk zPl@ky2u3nraM!+k6cdmqwK_LnH*Y5Q^tM{(^=a+Li{Ztf16nHD8uk|oDL#9)BGAD= zGF!9!|4z_$#&~X+O6yU_{|P;YOtfBf3!g=FF*gw_K?MQuPdLk#2nt|=&?S} zlZL~1_IzvVM2%Pv#YXQ(FEj-^&HdKaTJjd-KxL8=QVQ`GG0W>DQO%DaPatN2_fSD= zEx5owsfKi%8N~46aleG#j7O3XD$E0wj0M6&oI&_8ce-_owXrP%ho5`0Q=x3e zcPh{uyV`&=v!PNB1CKw^ZNeX$k%g88%U`brR;D76P4r%Dd8FY*ek2s8V$4IGE44#`$o!U#4OJz zWDZI`t>z~Su@}`E+L>rb3d=-dSA+B#@uBpccmXoX*EzNg}RM*D0>2AYg@m~KUq!tsf+)=CB<$SA=GKatO~>TJOcTW-ye8MBY} za*e}9WkQIEU+aHs3f(wNu97`p(7YlV9_176Eiigq{+2`MqpaudX)}GxyQ;-KKNXAv zQHb0JYKRJ?|HIK?$IW@@%|!+iZ#POL0Ue|}E_X+9=eQKyPU8_LDYbgk^dZ6G%pGDy*V=;n8DkG5r2So?LZ&(Qm)W1sUw5DlGEEXJxku7~o5|Ff(c8 z*%|w8|BME^OvSnUTP^b=-xe!Vg%j3Jw)n%Doh>Xr8S#Ro0|lYkua;f=i_JqD!dtX@ z_B#eS6&01wb#y*HJ?ZU@rva`Fmc`@+cpdS`bV^%?z>DKaAVwS=;ZGgfaF+l^{A2kn zI**1T6vDhjRS1|0)JXKoC)+$X1{W3lxEnsYLKp4d0Q?E^47>Jj{t*dtv zC*e!e=&>3%ncwq`AkJs_MdAbLR4lUU4Ve4QSOC=%^u(8wR|3meAee4y4n)AaEHnxw z$p(tQ0WA^xu+5DBJe23_MOURE@8d#=hmR~rg`+GR#+~a;QB9x62&$ALQOzmk$&!UG9g)2&U8=wuFSe)P9LTBH zTR-OH&{9)3h1>+z&Yq$P@=-aGwXnW={Zef$9i6u)Z_~br`&zsIGCv5M?(W8B)^?p~ zbQzkGyZMnJmHQBPGyX|0cGd%CTVq2IdSKR+vK7$!l7WVXhK_y~>GXoU&n@TaO)rfb zFE8(BiEnqeR}C)n_oCclXj_Ps8awo}va{!FY&4VHjhu++q`1+U zTs(m^1?qF5pw~`DGP@>@hX-lp_*h+5o`mx4jabloA%ne`|pWdq?Ms zFB?!VAGXJb4IwLAs;fr7PA>=aeT$Qc)!AhAw5=(ngMZgRKI9lx!7sF_BW-gHP2YPF z>fy;(Ci@|eI_S0{Kck%yKb;mu-*eu(KRKSiLML6HS>g3(E=`!CP<_?Vk$Wh$zB-Az zpV`f5YfV8Gnqipns>wS)ax8|KuZRpPvI$Sdtt^lk%B@}B`-8|1z2FM23T4lZW@5AVLb+%+;X4=ACGijD9Ygck2E}7H)N|8Z8dUL4 z+NvvP@;@cxPCriXK~*ZX~c_R)*>^%_tB|6Cqt+@{8D{*pU} zF)Xw?IZb_ezE`UD=MiQfu4`dFN zwT8`Uzw2l-Ry|4Tf}3}UQ!CcJ$DY-G4J z*1>a44=JAc7EF^tLS;7)>C=X*BjK0LUrY3--G=G=Q)F6{$zB4%3Ql(vIMEAxwjFGe zOTaoC0MkfPlsoKLszz>jKUY%FRrU}{g4n$POByM1{1%(uLIqtvy6 zav47J%KZI}#9fh53A`j~>pA)B%!K$|Cgb}hSjECDoGKn!4qD4HJ;??dGI!S}U}{7+ zxP64igjjH!?{e+GUS@fB%WC)|XoyPH8cniAh#~QAUN&C>Q_y|to~J{{G_5467|ViG z6a(Td? zaH$LCDx^tP$tdVUgM%?FOU`1`2vfhUTtC~)gaS3ET=M(Kz%>w1()#*h``52u6FPG7 zQMg3()*XdvQ#)tA&9V|w_t88M=B$q&<$^E00qt}@f^h&i17u}o%?9+*4V$1YHij}v zOH2PTZ}My$m-{5AJJVI6yVZUFl#lY8O+Gt@ud+#AUimiDwFF~+=VPAqS|PV`b=?P< zE@0}Uq^A$L0RnmdWgzHmt};T*@xtQ3go}myaCl@SJ}#~W_!?%;e8rF$o!bMME?|@b zpHH3Z9HiVIw4MXpQ4|Lx4C`}fzx?K1hIS?NIQy>)$MK>S6ct(4*48Y~eoDy!?;Yfym3It}S4R$O4z5|%f9&}Zq{WQZ{8J`1 zc^1n-@zOlXC#5{s`!hxCsN+?tjR>E(=53km_%;Xk(fP?7b(1Om963Jj=s5oVy`w|k zz8F*a@3<-h9Tiowhb0KIAC3Zf%fBFCQ#*(AaV)rAON~A} zlvrUe*lntf%z%pCvLj#Rh2BqR(SH{am^o>elI3+6miz1vgEivOzyni+Vd;c%gX?0@ z()s$YU!R3~t&LyxKZICLktli`jq|ZuO6yc;a2B;Q~?iU4J9vcltCvei|8n^IU0RZVy`P?KT}g!Hh9d zrtfesS^FF-;dH`cH)>vis86=jXyO#3eGq0$Gu^OLUR-pz{{G3Deb_({dPX(y#H2WG`|BL8U{KDQ;Wo*NUo&dK#^TIOBBlZ{GND zj4rxnKVa8L<^5Pvyw@KS)ns@0kw`Bna+zzW#@#Du+lZ;1Y-@j%jM&HsEVjz?6Z3lT zRqgT7_jM-4dudMzT171cbjd>?cC3`J^&fQ;j-nkCf4fyue>lPLYj~Z0QWJB)*2oe* zaP$(#_S9%MOEyIn3YE4?3KAi+}#U&qGu$F^h1 z4Da6)9dfRO6(@!5Tbt}ab0}3eSYK*2o4FrwM#B(i3^(HpvOqej6z(K8w$%6K=N0|H z&-ZrgBtm~*zi)WvpuJ8k@kd4~8bcAne7K%-@Z_Uq3{UtcK|+PRKnPq#I%s40$W7*M z^`9Q=YYR3+FGr~u!y9yn&oYus)_J~qY@_X`Bd>-+p76)s!tPMS%k7p}huZH>Up>b- zCWJF4Hy)sa*ryT~v#O$_SYQzn)nLX`O1;(z-8pccJ1uSv@)f~f5IJZ);!h|Z=;EYp zlBePQYE1OvV)dWHf=noSUGN4+#tbD~;1XWvq547ktmZ>HvaU^~*e+J)nd z?knGkZpMfra0|!nd3pJ~P%KP8L|X$+Ho;^cw4cP8b+#$~>UtAQYcXlZK}%QY{7#bI zneX4fgZO&P0IAWFju`w@_`mIeNk=wyD1XMs*T(}O;|F+1IL~~w1dA-zd?cVe>*$Qu zndI8mK9CLIX@1}pcmhK#f_V~>M9k0rms+XDbXBAv9DtgLzYBr^$uAMvuyJ>av{Pe-J7u9VNl zVA`1W%tGE%kHFDNS&ul{#*w`N5st)mUtaYTtLnI@TwdAW%Q!D@(DCdMJ7<9@tQq{~ zSxrK0#jo$K@~Ek3Dkn|j4V`Q^H$ig9wxjG}LSD$_?=vzosUcLJZ0P2&B%~d{6Rc&{ z#*uHj{EF-`;NoI>$*v9HP5FY~UR_-cN~k)QWEb$ZMb7WBsz*jfz8S1HL7-45Ae_*3 zLLmR3Gc?#zp`{M_x`(|WP@oNTunS*D;d_RI!9bBVA&SU!CzCLh` z;uOg5M;wwHJ9W20w9R#hu zzU<(;$&ULtD;{)OaOnsi63O2FT?69%t(>z8x4I1O+v(6l+%18Z6$aeK=nbj6Y`Jr< zLFxBfTQ8p`Rr0=&e4$V`QJGk1TN=EvnF^Vyby39x%3M|uf|F+#sX1HyFm;!jz$3L# z)y~k+5v+lj3*!lz(a#`*RSOCno2;exX3M9;$Itg?gd|17jh_ z%bd@R{8olJBa5hP>ESGR4hXR+YbgdAs+(w?(EXE-Hw%hHa=&smFfnK|hb47edA$zd z>u;a2FcaMWJs&_f=9Rl0e>mf}adNs>f7x?0pZ+0EM$(gM&xp}e{x;t2H49~|vR?Qb zO(Lb#)EH^sgA@&tnx{<(Ey@Qm$*hZ7*l`aHx6%!-O(@-8WG8pxCEN6xY{j$0qCFhy z#?kosE$12<$E>NM4ir@Wkw6(P6LPA?OVto!W!*?SgxdD(k^DS;7U7ifr=7atRM%{~ zPD+Z~JNAgDRL9)jNBX{3F{KAn>Ujw<$1<0AK;by!RvJ{Dwlvoj)6Ld4;xzhDBWuBv z%fHA>Ezy!UMZ>cbKPgB2v9ZoHs{{vxDAkdn`-PeRKCR@|0|+J=d7lvO)IiNphJXla z2y1f0wBDbQDO^bfj*?WGQnhR|Z=#WTWVF=L5tIZqaWY^owX@L&=KrhjCfg@5DUFyOIvb$6U- z4UGZ-VZR8j0cTpX!;XmD*~H!EtGnAE`fqYWTC9)m@8i?1p^|YSxMpvBAb9=DzXodW z4#jWJiwsam93|{jTAzlr?(tH&TaSBiryz${?=>L3A6y$upEDzBX~bPcv#(a6T%%qG zH$XVR5PI!#Z}+rJAJmt?^<-6z;vWEnDKq0DzYlb@A9Hir3YG=HIpdqdmev;T0kCu$ z8`DJ?PM|R5KXq5I3I8K{`Cqmeai`t8cTWXSYI(0rfJugt5n}UA&MLY z1ni6-@4n(r)5zDQq@`WYkps1%6K?P8`zP(iOZ>fCa7NhL+Tvhm|Fge%W$q>~@2mKT z=F2-UU=tA$0mU2W1&o7n1;18%VslQw_&!Re#s#41kHLRt2L=WhuBsWx6n4R&=^g~K zz|HwHqCd|%S6H9U`~}!?S0D~1S1yKfeKHKlW03Oxb-XduJ1;YhzVd9Mmj4CT-EC_F z0NkFI_Q+{32z|02mQ0dix70=bU6LcVXBw3edbBv>#=Irc9&-1(y*IN-8_k2WeiFPlCv~wMJEq%^w>92tzMau|ptm z2LLCR6{1l8wRLvLvPLF2sD(#$T!HhI+}|!a-v0*kB%RLowX#Fj&5240Vx5t``^Xo# z1_qnoDfKxsJ{w4RtYTw2(=#yer^A#ckeLHc@rD|PEEzq}KI5v?#Q%nhL`1}YXj5R2 zN70!!=(y$xN@=d*wKN6(wnDpT8Qhyn3wZKx=wzT)Mbj-{87*IXfD>Zx?b|DjuKsz82*WiH#!mw|FR1(KKX{c=W(O8**AD zn|t7Nbai(j+mDY4mmwBD9u|@F^V+}e(FAbbg5*a(sW&`(yY*V{{dU_#D&l*a@_t7( zL>Q4j!p-$`FIH2^31Gu}X8NkkKn9lS>MG7(K~mtK@5heW&w86|`ilmC zI9po?c9#}8P(w*HxHs2vx&)b@ZR;IyC4Ksi^Q(#C^kMg9Op2!G+%>%nAAG5i z>05i7yG!SobXUoAE<0r2E!d@GfiPjA6m&#LJP^Fj$1gBnK}MjomGoN2r!x=(hpCj1q(bbaDVs7=3?2MQrWa~mij+j+RRY1c zd1e>ZE(P+2xjld*4h5a>?`gJ#=t8%atj3$uox75jHub{^g=Ao6cm07`r*RHF{s{WPiHhr7h zyKzX%1k(+L4kU>wNi`DHsS|qZb$7dTgI{157bRquWAL52(7MIUEo2)+EoinMM!dS% zXy2n^e5b7qVy@Pw$b`b4yN_WDwD})q-2Pc|@QHtZUqJ(v){r2=s1mflaP}8QbRS|y zF!l^}^%dyNENNvSYd@e;4UK{_V&8yR7h2{GU>T5P1r`|GS`M#4by!n;+oMnhrNiT2 z1fsWz-`(8Q^t7OZx;)A1daL-JhCRskI!b|ypKXg)hExcJ?f+OqN;L$ihX20v%|Zy= zG>5vy8JnB)rE>RJ9VN&%?*sjiZXJ`=)ZW7f4{+RWS=9k;2lgC1!7r{fZGQ^KhlEGP ztMEi=wVppqxR|=PTn{ar_>HY{yS)5q>Jn6y1W9@>4QnF{MKF$Rqa0DY4KR15`0d zwU4h~PIt)F^nw%_`TqUAUtyxW*mxv;9>0VxpTlo6ART}*jaiGQ5f3>nWZ7>DPhb2{s27t&DuEU%xXInsbtNs<&bGxtb>_bu^?bf)H4@l} z2@HrO<<2ffL$>?mS_3@aa~!mu*>_FYB3L{X+>2gb`&!)n3Ff{r?F=+3$Gx0sZ@<~X zfFEkX2A?9=f@T=0oq{ZfqtGN2tDrZ72}Xe*Ll8Qs*Ngokg(xx302j9cxnNR`YzZe*N+_#Hv<`n()xl;RCnC@6&A)n-e1i+d z5ts_eTSRuG+~v=!nw|i-<%e9k%QFg7k=nuv2&NMBOIVeI*K5bXaYgn_{gfm!J-jB^ z8^3P|-}E;~WiCzb^lpVWlYW+WODgB@kg-Ekl}xJEc~h(Y(RjT6y~&zU_tiPa(vosE zmcxt$aN#0mMn-BAsRqK|T;q5$C6Dufj}O&W&O$?kSW8b^?GmJ7BSi?MT#nRG3eKm- zRJ1?^IXzzP`3_M=Hd5tXt|6=V@!9yBf%D~<&VJy~MFE!5%LKt>TG z&-(-n=QR>kOv%Wp`<^r$y>b`TiS7E9Z6X+d!*0XTr4mV;IHV|9t-`cO@5k z?(`}&LG_C+)z=QV2P}?pGsidJ&-v|sl^|{$Rx;a?Df4s^{YRTttA5EXI(ru?7!A7^ z2-J)AdJ2Rb%N=1BUYRz=Ok98Vtd3=>47f2bfCIu4At4gw@$T;KnQuN#s2r~&YFVk4 zJvGX>Jw+Kupz5vRT^`B5zONK}^dMWzbwNT@hFF2hC(jGD#wuj8${tCvT*<)fQpRSpv3t^LV`2=Yp){$_ujn} z1*T_p0eLpY%Tjj6fJS|W7xtmVfilm#d69QWDi^iAy$t{yfL5HNL5>lyqvjs7t(!uB zv#JLFErqq&_h6yg=|!2rQ(*E?rtik8{#}n629zz;Mz61d#Y^BXCeH+dXJ{K^_SEbB zQ6?)OzC)Ts`LFfHbH;#I?Gtxpb;A0xek^0K(s_#q>EdNRYzrrTu2J-9jr5e+-U zA?uH4vjlE8tGc(&IiZPN9Fb>%ZbHxj0KF)CPB-r7Clie4X>j#Q`ft;4dZ21u#r<`d z1T#tk@^HmTQ33t2c*;yLUP0yWcle$^mV?P}HGXA5I!x^l4^o+6E&_^Lc>Eh39dP1; zMORIJM;z+bGSgm~f(SY7UnA?xRqf8Gu6dN#?($$fMR z0u-@tt??HFvr&;4#7dU;-fEBC$6#N3cfkYi)^VbRfOC$#+fRUWv%J_Y)BmrmXu=_H zfHm4+WuZ(z=V)L+3x_FJol3WGa&KJK*+ zWEsXJ`)>Z|If*xc=|+QN*cZ-yvH2V?LtdX&#tFRKl*Q**$J)){ zKL0Jh+o=j(A&`?3H1a^%=Q6)Jt0x-J4C@c~LkF(*D_FkkMpuy7k9Z$f2`ThI?z&v? ztCp}Z9vr&k&9L9=_#3TXDl5cPgv)51AR{R)At3?iv zPf92Upu9U-l(2pq*XPo(0P!8iHHeHS!EjaCOIhO{99Tk7BKlG4H;>=fVH9mlt^eWS zUo8E-3Oxvu_SN&Eay*NDm%wk{D9ro*4JTzEB8l(e)o5<}xcvom++R_F@soI^ZURUs zbt!gH&BIDvRbtvgpR?Eo&e~N>^PVY~2j;(O@WE8-H|n>HKq{axm@pLCu>~?>S8VDG zY2F9DNph0bMQ}5fl$P{M9)_%~KW1;-kyIcfjBTT$o<18&i#@m9C-`u;Q)#}D2ht(AU^)TaHaLd>s3tV$0V&KxU&66Qhs z3J7m6wm#ksjJ_^m*di4rT3Y(PiO3Y;{Y(S5K=9b85kiSDJ2A|fp5A1PzTV>rJz@|r zZ%W?~)3~qh(~rfn+#x}H-VX^bUj%@_vrJoBj2%nG92QRqL6J|n@fB|SrQgAP^IGox zliYjDxY=0Pv|Z_ajGu$<8kVkc1=_B)oV*_KSPV;WqUV`2PcuaA?ghcB32!v!f7&_;c6M|M|F2$!rz{? zHVTeT6}VG+q5@nAlMm&KH6)kYOq`h0?Phu2J$z!qhYA4P8%k0EuX5E@{A4QAi~{%G zoAf$pS)9uP-c+P8zq6z;RH?h^6fL>a$^wZi=%3m~MRe=bg2O`}eGqTQ$FNbd672jB z1ijaguO4f?prWBhMsVo1iZwGL-@WT1?4<5%S^&n50Q!InM#uUsHZ>Sj_y?Mb$0<}d zf>-H~7_8X^+}>hqkT?mM0wEz`%i(td%Pzc!tZ~)0wLk(_$jSXU7D(g3^lMGb9Ztu# zt8Ta>NU3Lr6B+G?qG1W|ui?!xkPsN7Ce|!YAuiD61V}m{XuWzru&M*kKVLv=Cb%wG z)H(x-4QOukrz?SaJUkcl7TKfqM1#nCaZ}JTfS&_yk}mr9Dq&ihm`9-8q`>uON-K5YHF zf=pl=J+Z3BgP={6;%s(XIV}2{P{Ic{bbbpSx4V+%TBJQ51>X(qzyi&L>pRQwnHi%) zP5coe4U!5s1Tuw1;XwFFwiZ*jZrKk2$ur2^R{FK_)Y+l2NEEp+me21-+U@JMyCu%~ zG5^f!ysjaq_%!}B^z^@UTXds@Ixnp0Y`XGQ2BcWQqsT}FCLxUQk=8+2B$OwV#(C`Q zLTiIzHYkY1o9OCfbF%l!sc|HB6|)ZJ?Ve5Z`;Xb?Tb=AuSu?VsHFT#+~oX81Y!n?!=*Up@aP6+X1dJnB<8 z5@S_q_`wxf!3_@?Io}>hOZi)``VxG)-P)U)ci#!_7hNATzS=IYiY)FWiwGbgd5{>d z($k+DU%)wCGT}<5S5Y)F5hYzUp)DI*peDQ?=bb01Fj_cFy>w=1s)@}B`QX)A6h?Lu z2TA_mhjx5sEpiiYck6huISf~_9RZl&dE(PQlut60q2V;sRdm6vyT)OfYg~_7cn(h& zb_XINe98Uv3Q~ImP-8#rq8OoL{YT=*Age-C*oXJ9I zbQL;eAS}Ig6Hx#tOijtF`Gi5BY;GT&>or}8hB#Fhh-tejC@}|JS@(*3LYgj~yldL~ z+tLvAeaUub*3tLP6^G*PXl%}ovJQ7XrO@%y7#6Ok$r58X?`HF!Mprtn-pd|rqA+K{hl!%$MO_}S`cNPO>t$0;bw8|9dqj=e7mxLR z5&m$CVG}o`K8e19k5^Yxsc}XjV`PU!7>pi)^eAXSJx7;RoU8{i+|kILQ0c%Ai1pD9 zkdQ+;3<+$A_1BP_F}Lf>s=MR6>vFT6yhf;=#rr-Fj2sS?2GD7JZF>#{Uc$QC?VU{)D$M4d4v{CZ|EAst(2t2Fczusz5W)K`ua-}!L1zV9Z`@Q zz4dg!BDjTZ8|bSk^cYRL3XBbc$*AW3wsD}KDA_qV1#tvrNu(I?piR^yGd*gQc|t#1 z7{fs?tv=bv{pbbzBRjL2_cICRQxfUq$tj#MSInf?^1BZ{jsH6HY2QO%@ofz;EbXu( zn^Z&+at9A@J4sEdUbP3cU+w#$E?n@xHcTZXCXS*|Ss_f}x+bq${Qp^(N!=;^wkyn2 z{?gm=#dD(m4k%ZG_mI={niEGy9=XLKUTU-i%@QAVHPpEfXVqhg#VJ#PFc`~2H}qh3 zDzmmDESA{MulOfRqResAXfVGk3yv)|+^npa5aH^tQQ1z`A8BA7^^WO9l6U4U;AV;ijhC@iMJW*7z%bTa_2xJJb zD8X26(?9Rqg8%r&8w<3}JE6Bt?PJDsi@!iWoo5GzhiHPuH*RQ?ra%Pyf69a3sg280 zOB$>FHNzHay-G@u0tENRcFsKY=M1)(zG{d6$N={lCC&@Sq5NXttED~to|hcQVVvjE zZb>4ZFcV(*jwo>|n}#OW5t01h0m5f)v?X9A(5ba*OpIC*G6mgPG-lrFel1hwV*i+XGWYwVM@_p6wG>Ov7^mSiMKU$DVk8BIdU!@z1rrAW zcqvLq6Gif<&T3_*m2960CTxlinUBhzc{cfk5I-$0a1n%HiM;kQ?HN`e;KC`;c8L^jd3={zEX6D zgivS6YiC*324We+n(^}Bphng7d!?}1h@{`xkimi|j5p}3A6v<>lxdQtnUFkL<^uW1 z(j%@O;wbq~7QS%u4i1y1f)DLar_If2mfE~N zLzR`BXt{o4X{y`g0WF;RX1E&MFN}mzu-D|-t`V^wbD*u03$smn(VMq+9ITFD55wc> ze+Yw_AUE-@`8X$Jb)x_YA?%{2_$oCwY^3<45v~LD;y!$g?6Y{*RO8(7|I-h z&TWPuMOlvFFFN9rPYffmGHXG1siK2f%72m;dQxQ*KWgQ5A<9)B?JqJ%uVc%iOGxD* zosy}f#NYrzgwYWoE+?m>#B})g?_W?o3{t+HqiA4S<&!Z-rfC|*b^8NVuYCXw1o*5n z8)SU^11DLMv#XnbwZ+9}(zyBSS3$4`XdI%T$s8jK_d;Dk5?Gai&DV!t3aY6u@ zlkwU-1@m$Wug#WJt}7!6O&rFTX5)r3UTIKDfP7`#UbJqCg5M0Jo0f@EkH6y;45ZMF z#E7%l^J_bmhYl{g(5|@Q*cv+(MoWvlD4%>OkQl{ns%cDJeutoN)_PoczR-bs{k|TR zj*AjY&RhjGh%w!V%@fK9 zrc5ATZK$e9Ne~qk|E!^bTHVIjb-rH9skNqt^aX3ocOb>{&ccxI?oNY(Z%wjZVK=-S z78fnus!NWQcn>9rVjABRo$Fz@c5!hD_L&S?vKL)F#;_`#2w003PoS0F#(I^Rz2ke; zm#~2TJgsHio50N9(7Txtn;D+*(YJxoHd8Uz8?DEQ2 z!|QJX3>YiO-HtO{+kbtSL&5o>l`Ec9SiP<~f>??&k)E{x7n7Zl9NX1vMlR|^`EH~r z^wPJX((P*V;Y+IG9MkpmhTu8YivMc?J}fLLV|5TSI=4aq+Y9_(3gVsHIbrXbz^ar+ zv9Pc(sib*1PdSg~5Ntx9*nf2Qxni|oVhB z1aZp~$YZcN*$e3>>#;t$#7k;msg5}Stpm--_-{HH^eG%P%cw3w6>Y|}mOCm)MwNELBAQH-Pe3$Z$TnH=@@ z!!n-;3{TDS=rQs|eD43Z15&vcV79LfE_zFIK`m)TxP<+m5h=m-~K>WCvWzD^%z#8@5drYf#)eQ z-bV+ibCNtqzj|fzo1YH~)zkRT5&27!Le(67b(Xf#GGC6*Wscvej`vW~!Xg|Jg@K95 zM4FGBdOI!rUa3D0qs2!dN>nRXC?Ky?{Y_M-mjd)&T@*>}-dW(sn_atqnq65noZD=w z;LwBpgljsZhY<8TC7yeS7@HL7Ay@4;2e;c*w~hfWU4^L*Y-Lk6DWn<R0T(s zWeDmW@tdt@-|#hTV$2-a@U$9Ol0)|fTkukWpI_j=^8aAhKofv$Yy=>jZCsQ0?;pSZb^{&XOQvwO zlrO|Wk5i*w8>=W@IwFBxr=g+YU`<7Lly0$vM6ogwinSgeA5SM;y25vF`>}ZPs`Jy3 zzk#jv6Yk}cU!HrrV?YYdZJHModZb9gygb$!o|FK4Kh0KMC$ZR<0(oU4C;s_AMEMG{ z5Rtfd@1zc=TGw5tq#hYytbRpm0;c}aJol3i@ow+ z!Er)ph>{@1rD%5c3OIq_La*4sdR*I zIq6ugsp*g2XnGK9s8c}s~4yi7u=vte>EZCs~G+I|4?`v1{% z)YUd?6_ z#xg1$>pwOza>htBx7u6nbeAgUo1VuEr*Tftq`bf1JC*M8{5yt-b1i>!`Koer)_wCh z>td0|cTVn;ZdG)~Bd9qEqk%r+7Cbl(pCMakjwWWk1U>W9%k|Z(S8v@MQ5Y*s!C9e+&&D82q z(~jTHi6Zg8%RlcMda;ELYJvsTB%_?xKNnLeWjh#)*8S?V-X(kSDuL1&5;~DuXRTL| z`V|o=lFXKa;e-2nr6xnKYBN4q5Z)Xn`8(9>C2X+pJoZ~yE4cC&=VQp*&vVV6eevQF zdx>^~er7HtUy(%URT{|?n(w4r?X(Cm+J`O%YyC=*W#xYjQ$&SOF+e{BQ${eN7)Y-q zQ-bXf?1U_kH`&QlKT~*uDNxNn-&PvB2o}poLd;2~{R3ewzqi+lbe;}4V#K)>_!_Ky zw2ItStf}x3QQa3Uo0nzdv}fp?yjjlV7CCr?aTA5;=Qnfrz8Epu@BTc?=3)B$eRE3o|h0wW zE{|fWjq>wX=)vly;Z#8_V#`x%SkTha@XbQN4SB*>hkVAW+Giaol(mEpeO~itSDx1^6|h$=dMMboXwQd#BwMYe8|4piNfl`#+1B0Algy#zO! zed)`Y8!qd(Rb>kknWskC$eo7wnvc5`5rb!;dhMY1Z%3P*9Xh!&tbLvVNIa?QFFWci z45-@-5Zqk&pbrV0$pshcf1FbA-rwvw2&tUttq;%L@#$-MMibDN2}rD!iG*Uq#Q&y} z$lQVC)YKq&$x$eK6_*udOUQbkFKDMujCI{VH%s(@6-#EwMD7K#l27zx5uSoaD0 z1XEE`a(;oax2C#T?2Y{BAcXWA>Ltp@eZ^8SviR`8G@}MnQTsOla0Utf(v%=obP`K`dV3i#Y`_(_! zK9_gmkj4r7WABEVhX=QxcL6!b_iil*xS*ieFPH;{%rg0oXP+ry3rz$s{F|Vr10rNK zNxry&PfV<{JJm0{Wn+lB0aO3o^&~p}t!>}t_<;-MNK8)iQy3o~a6U=q$BVt)Tm=c9 zeTir6mIBKIJ2Q1FA6)IgZQ0@uso}BX!;ONz%(Z(p$hb(MEg@1>Rn-}z7e8xw%@UXX zGukUC)MI2jjo;r!G4^O#sWfO#KB;n@Jf$N0OMO(g(_jZ8P1s*O%K2m_$#nj^E&tK~ z&v;xRyVwNcnV(u5UgoondjCapqH@fawMpt7Z=49aDn$;KYX--^8?kr2b#N$}b_NqK zRwZ0`h+ZhWcEYQ)3HQa-`6M&n{Gn~H&w6oO!w&q3-J3I4huZ4n^@`Bp1Xd;bn{er< z^x!R?Os@v@h#1*Ol05Im(zh-HL}BhF>y9d=Z?i zaec-z`~Vv2?BwR==LII*c+K3}lR*6|lK0ueEJxm);mwQa>3fkG0pwPgLjHBh< z{(z(BO{WXeXXHHtnme?fc*G+Y5zOm4jIl?(;*_$6#@~>E@n!Y9|3K$hZpR>~3<)^h zwfHsHFr;Kz5?NmcgmHo_vb&p8D9)cx3Li%W;l(r;{;n8#%*B;1?r}G8yXoc{xD5nc z()|xMMK@>#fCmvc0=A#FmMh`V+1I5I#-!lL?b6^bHTXA;7VB(yWs)l|G$>awAoERU zrRvh+UisTxb(#5mopp}%J?%gKVzDVVfM(9oQhJWfGwm`mF{WhThpKD6g%M}sA`c27 zjQCEWsFq-vqUJSJnbZkQa!!sCr{{^^qn*Yp8GE$7S-Ri+S^oPZR^7z)sJ*{(UR}RO zdCW|3S2?zVcE7@9bvPXo*$^!%BL+W8@a`5Q*kV|z(z)~hF5 zRbMUPaVPp7MnSJQC$6YpcHKFaGqRJi>-Oltl2Po*-CJZtcC=saZUVi%Q)-qnyXu+% zHw&a9i47XX@SCCbMTGyr&dJeOKQCAyQ0H^|Yy{inDjteoNnZv_gBqWkBUp0l%T`0q zSO_HVUo$R9;D)WCovpfFy1<)hj)q_V`zYrz<8`v(lCD~%OlJ)j3o$RjgFIbqcqDTu zC1O>7OK2vcm!i&N%Xe-*+<%+?>X!gdJy1g55NPSg>k!*V6SiCG*7dM@hQu3??Wvkgu5*`TxtF0!BQB$11VITWrreT+vBlz^{yI#E z!5v?8LQ4GfIN7<{xVc`P4^|H3lNtzu!y%zChzwVZ^5^F{F1`y7w~i?B0}fYdhmG*l z&bb+(Ehqs$fa=kSzx9DazmK5WXYjy+Yz*92tLp1t6zS|s0P-$1Gjk;62Nqd(E~tud zlKe*deFV%{3GUJ;0uMuOyqM>%dFBe3#YEU9F@}hkfjoH~XryAwU2rtJm;jh|SLF+1 zWAS&Z{ov;8n6@L%^0>Ng-+w&iKIv3zbc-&g4l)0XB~tk7=*FE=X_-ZDu@&pM zu*!I?O>izGBsEz?dx2?jN{yCkt{o|a;>v&ORi*MD!-oUMV_C>^)zq(S`NCMAYLL}Y z&ffLZ% zihwa3-g0-u7){;$2jYZ<0lF>}UMKuX*$S2}?!7q%D9Fo8UmaC=tQwi!79NQN$Qi1a zqR~L%@)EP&@ZVLvCr!8wi;Z9_*8RXPBqa1d3SA}jD~Ra6#lkfWDH4?B*=?d9(9;J1 z+@y__6*VqSz&E~@eq2P$BY88J|6V_8Dn}#X z<;2bj7>s-$kuP8xpYi&4e4#$$kd*Xyef@0Iw77uiB434!9_SI1$Z+ZkJj_$%U`BPk)`Rwx9l`;K#|)qYmM{GR@bruw9%>VVd~Ntkg7XW@`Ge@pG&J znbUOBVLs1vz1QaymJUZ(R~tkBr4F8F)X5~iXZuSaw>3U)NEUn&`Ouizp05f{hND>I zs9%N^R(WR>?*~UJ=Os-1h*Zk3_H$fWUb#y12xfLZh5NZO zvJ5{SdsE+{(W!<-vyn2uaa?7^Vk3UMsP~uDt{pSzf%tDflE$BQx9qg^pZ`@{CKRtg zaJNv#!SRD|nVFfb8FQ_Sr8%iA;@_dDT5AJ4H?MV`AR%e8NGr4FqKMvCI4)siH@0q& z3Q8dx(e4m3*Ki*Na1C4$g)*{RC{z&aR{5@qIhS=x+#(9hNz)skbdG^;fhE^X^9<`aw`euzCo2A!BbPjHwrsCT|F zA-byxHP41a6xm>VVkC(UoY{96+fmRr_mm)xNCjjdr5xmNCPhL&gv`PAEz!s*<;C>6 zMpZ_V(FS-mcz?6>DBul{U$uN;P-4r+UHN^oj6M<;z6fxHbkb7d}Z}U%oH9 zI~>+-DK&K z5Dzsg=aarT$ojdmNXXr6%oBflvOwPGda26rzqgI6%r+NC-Vc06j>!E$x#ng?E$6T* zWM#gLc_2{`fi-ai8yOD$`JB%TXxzCu^|@Ilk-B&`df%B4tyHYqu9X`DCKE2opKT-K zl262B|1B<_wn<;_WnG=NITAX^X9kbBoCSFu$02DZSj1}HU4tXTIj^X3;iCr#R=>}) zw3|&$e-k0EZms*TxpS0cUEk_^;;LGQCe*yc@i?r_S8#oX}2!)F8Mg?Y17@`~9SGbmKpd0QHK8SOz#J zX+>T$1T}%tHDFz6>FADU#2pvx9(Pqv0>C;GWFRk}w8-phU44U#mYTZreNf7?XU_u900sjlIO}d=9~5#Y zw@OP&RGhQ!;;3dmTmB7lPG%R_wRZl>5&T`o5Mce(efh*)=%bFR;W~3gnu4cSW)m33 zYd!VzpKjux zWL{*n83MBEF6NN>@xv!+AVjh2%QP`Gj127A!&NBq&LcvioiIiKA@ax_h*8EtnM?U! zo`TO%vM7E>1;)0@Zpi2v&qT}BC#vLy$hN8xqbv!pw;=c9kSdhc<4Jp$PJ#{d@#W{S zstl1g|G=Z5;$>tFK_12Z{Hku)zyOJ?hAc~@|L%Oa`qUf!YBM9pXA0rhM?2TsoMrWK zEDnh_r91x11^!0i5UgpPFQ}x>eKPVu^?UvI)^6>E$?rPtrrBIXjzqbGuUG(ES#nah zF@1+zMOFWi!ZSw))>z*;W8wQ^UVYwUO+L1^ZE73ixS?DoRm+(7D?Hph?l^42da{ac zDfdsZ#E#ZxPmdNnrf|T?TgoO2vuIAIL@q`f8W|Y@9y-qYm8CEEFjxHdbbYhYM?Gaw zo`=>r{`qsx1#<0?^Wmj5ELHvyaN|JZWX00j!peu%>d)7U!63}c!~}eO@MF^@y!K1Q z)kRjk8)nwmIRpwECdOBh@;%pA7n57Z;8);Aj#&ZMXM1~lUj}0Bkq`4{x}$ONf~-EV zy)ev_@-tF?kinmeefRP$LetXST|x0(FV|G<__niP9QJsNT$vDb8%sX+-gIwR$>!sI z3xSu1iW5g@RFKQ$G?V?(!1!;64qY9GS#!eZYgfi9{4U;QYL`h|Ox>^Mi}zgf9TP7`Xcce zQQT-@>qOl+X0THNF$=-`__&Nm=ESDCu=eK6;FE6ULf-Z;TV`6>)uW4%iGcylIk;R~ z^)W7;L?0iN2LdxdaF><1j|ia@|E5i{vT7GX7F$jO31Le`Z89fzA^s3=U;RZy;s84F{Mv9H@GKx;+fk{ zI~`|FJGIUHH<{@5WcQle2xW*4=^(2BhzTfjo6f#&aT%D7fiu5$<&Szj>vy87HEv>- zt8Bu=Uqz|KKD^^5BxKa=4>WZ3uS=) zx!CqIKiTdG6yXxWQ3-;;|Gf|jgFX+b__CShyH0-vL=%xsmrd8}>QW~)!o3Y%SL-yq zcpazckB|K`az5L1Gzxz|ICyMxv^i@fHHC8g97rVNq~m+&yd-5Cl-s35DE|f2;e*SjX_L4C@YfB z*O_u?Hd2T>76-QnaOc1BZvtw=i>v=+g&Ri$0|Ow^>EbG!3j(N)9_Lrr6B85QVtbhT z^W7R51bDKk;{IS`w1!_k>20zqc(XlK16~18+3+AYHTI(~Bz{1-`+aiDIglCr=>TF+ zovN4?r@t|;n>IByrK6+Uekayo+UGO7l?X@}aFYJ47CL8_=YATy62X=a*1CY0kA*i? zR%)U3z&(7w{#~!U*Nws%g7_3}Ha5h!{NN(JA?6<$5pt z&2aS4e^Hq_Sp0=!*>BNKciCj%F7_uydMNpv6pd0K)Az*6=L#y#z^!jY|js&>9x zH=gD4cOy5OwTwx`dzZ65>|+Ff5aJ2TKgK<*|HdC|tLua0_u=IZddy5vYqb1bW}$l> zX;u!lOiIIHVK47MWv!yhq^>Z^=)@B-gVgZtnv3Zj@1*S$rvjgY{d@Y02}mQm(&^+T zZzqeJ#n#dy_SdF_h7?%QyE2&}qi=uTd%tz8FyO$70ZCS_VwemxIW5iD$TX4q)AXB* z!~RpO_an4^27ELzY3Ao!hoae&NUnz5kO?p6&dV!$&znb5dyz#&?8ljTi>h6$ck4qf z{nnnFfu)Nt^8s@Lh1NtlHM;o#cz-jYi;vrIpx(X!W z2IY^6vca%rm@C zlJ4gT`k+3H=Wp5vu-_FBAZHA1zdM@_Uw{Z!rQ38&P5tM3hif|8WIQ8!F|oGhfB<_S zhGvw7!dty5RDwGo zF^08n7scdsrZ?!zt|P4-IQZg3<*ctrI9!lzID9|hMB4E-hQldjak#f+Z?_QOL>;@V|Vdjq7hGGs{53V|+53YuFq@vx5k>2@%3v~e)fQabJPuxH>; z=?Aw5c-q$fkh$f#o3zwm14abYmMlv2dz~Ni130Q*v>-(0sSMSE_>auRy;8QWxL?_u zNF=Uo0z{^6(&H-?5|_!)F{5HYT~G$ror#CPyJ<rE)&E4sEkqXTt z3P@zdm#!E=i=a4M@@yClB#$7n70&j&tA6+E-(i&kLPKMHBhlFjgHgF2xD0G>{ATNu z)Zu&^X-v)pH<{U==G*f-g_qVl2FgkhY~V8yU;9xfg5xItW16=q>`vp98SZ`K$}Csy z1heDOaSQ*?0^G!YlDM8Zsjt&ynn|BGhN73q)uoOunr>V;F{}iKGvp|^tU24h+W72g z&&`?#r%_SM5fsww!G*dWfulS=x-dfKh22_-A+Q{4)?Wo#KJ#||$M;!1HfvWF8>Ek! zqz|{B(UsclCfaQ^$EKHXlZM6*;zU3u!-hUxjfG2}GtrwG8A^k;fi#y!udQ{=($dnZ zjzE>wN~UC0+sD~PkDcDRmWvpo*HWH$QM|ii(LYn{Wbp6G5A|({ z(zSZeuZE0*GWcsJTX!ef&{0H;VC^anf^GlEx*#-sk&woBp^+epVcdV~|V(22224*vpL3*l&{=z16xBH}g zmZ!#BX^u5<18eU%l#CMd)yN&u-$s6N?SPK4{~WGdT~9ZY z;$EYR~fjqyokuh#G}h_L9fqvfI3uWp@L~DezlP&m%mH z7Z#**hcrtVa!=$XFc{2}ofmogpX2S!e9yX51bS?>6`|HLnW^cuU{JMS!~XuQ0MjzM zUv)y_J1~9&X(f07Ir@P*<`KZ!Y?aojsi;J^rBAhYD?shKe&$8AOvI)1Wr(}34TgfF zW%tLVGiQ{nqX}A%gid12UeMOgF0IEl#O7ZKXUN=#wRd786MBwLwzf&}K@rgvNb4v| z&S~}#c>d>DQ!}*QGlj6^j1$vN7&2SK(%Kq4nM7t%uv8h$kJM*stl9unp^k}qK+0EW z!Febw5*`st^hA+nl51&!_FnZ3dP4H?VPb=dCdFRj^Q!KKp41p2?yw(JW+M})oO`XI zloGpVB&#hx>dbkGGh&P|jWGE2&Z8{Pt;3BOab!0~hx*OmPsNa52mde+pX;yqR&&CQ zHqh@!DalX+woFe0L$DN~e00_={Z&|pipq)!_5+( z7^4X2TLn!Q-x`46m&S;*xXyi(IP+;C8^%E}j4VTmF|-wI{Dz11GFO~ zv6ZWbO@`xESUV;V-ATqiw_Gnecsu1OnFC{k4fDS_8rRM4TR9Nfk5Amq!j|P?!5se{LdT+W9-lMkMYUdt=?#?`C#$AL%I*fMG z?*t|&Yrs}iU{47j)Sr|xAZ7OF6yXBTnIou|P*?t0Xr+fAehS}$#&sGwHt6O-cte^; zn8cw!8V!EF39fT0{HqhEyV3K@o8)OszcSQuR6kL8gpwQ<1ogbz%}f}}<%vU8HH<3* zVI_ucA{3s+XZOnz?Z)9q29q#13*^ck&n$@&u+?TL=cXWpLcc*by$O0>Cg^P>*k$@0 zU;er6W9RXlU9&m+h=qs-Vl~k}`bDZ@CqTCY-#Pq@F48y{WomjjoI6iej@~EXDIP#f3=B!iWgBC55sh z3ccDAsCz)EZ8_Hs$3=XMj+Owb6mXx3RI5Lc?OgrMCL5tXDPpHO^w(!c*zt)YdQj=m zpAun&!=hDW@Yborj-UbhM=++Fn%sno!1W(I$9T#^=QouVuwy+D6%`eex~rA!Z&pxL zors=}dJje&v3xo4mGblHlak`%Vq)I&ze0fn7-NJ6Yc|j+zct$wP~0CKju9H__#zh$ zMl^sq3>isKUYZ6K48Rs+m}Uo|Abh~hOtU6!#S8YO{SN8YRLw!-#dfg{ zhwO%@q}3CeuI$y|we%q*pX?YFdDZRzo*-ajfwh%`kv{ijY&S~#>QIkTE)w7V8Jq%e z|CufK{P+(Fc$$AVj(|J`FsR6Xhm;74K2D=YA3lBrzCy)AdTMHLQKO=!o`~`u1Mw)3 zs=BnRH@3V*lf*M|2_`n+k*1(x{&{FKhtksg_!|YJq^ztheHw@V$GD8b*PpWzq%+Z< zB5(jR!*x&K)%1aK5qIzax{o10TICyeDefzL z?mwStRXT;6c)Cs5*T%!(%*uTBLNxb7M;shfwUi*g?4&QosS01Iz8T$HILQ!cnWigo z>CTYKCDQI1^tHPB_os{a^=n(7TrC@`h6-Bkct#QEH{IuEz1%Y|mn3;w7k^aj#aa*= zET5eZDmSf?N2R2gkZXVbW<PFHf#bl}(Zn)~DR0Cm;N~RYM!#`CAwQo544>)%m@Bp}$$ks<%Bedhiaqdg z2(uDcKis7id$%4)Q2L@~zcnd~n6ad^lrpqP?@x32pBfV1x&NkOW`>4dz~{ge&m2#L zZGFfu_Qs^%bFVoNPkU$xz+e^@IFNX)+}vEo5JaC+2YR5H(t|G~J3b8l-?Bf44KmY7 z_R(w5Fi}3HM{H<(tnh0`pr22k%saY3v`ri?ZX`1Xf26JkPnMZ=UNi(}2Ny?JE*1iX zvV{I)zldk~^9w?O5ai!2_h>%8%m)&|d1K}xR=TN> zN>?hl?_BaL6dijx1re|3Zs35x?Vx5gTzrUQXTl$2qm5JI*-pe%YA7E9pJbDX^QDs; zdewtLsgkQ$C`}5*mp{mk@ZP9rr@UY4fcpS49^MSo9ENMeFqqq#f1HNl;`a?43M42q zk>Rr=NZDY&bUFd>$LVdv$1*`tW8>_c_G%NjxduqSsCz2*Ud>WnJ=z zz{ftr8D-s(n&j6WBGmFU$*rOfr7p(^0ye6z^K*8|Z|2(k7jvcGwN*@Vvg6?S@Z_7{ zRcyzJK%k&adk?c5Fya_&p<6R?ix&%FP*2@M9}o4LDzmG5mJCYBxq2K3yP%6D-OeEd z(Cq;$1fqRx_GlB|Ge`AcjY1C4Pf59~Khbm(9T`T&>E*N0Xb(vv^M5zQv!D{}Xhb^80+4Dn&5Tr79mAIf$rrb_sp?rv^!kq)P-@(SG@ zjAP#G)h!+dP2c}1PxPqDi!>)Yi)TU5v`y-`V$K)J3CUgsur>gC>cFw=8Os+o{ng?1 zUC6qeoUS7%OSlFo`VbY<_b7qo|9n%6Q-Ii4P*C_DQxWkgJ!dSB?*O!CVXWG|^QkF| zN=QfufoYUx)kE3#gL*Brk+uTq?&Pm`hrmk$Rs$2x)gXKiXr=V@uxc_n0&Z=jfF&Ui za{bRqI65){w1UT*lhr(rH%1IyG#}<}GQQpVu`U6LAkK==c6!QL@%q!a>mK?a+6Mh0 zXB}4c%Iyb|LLRpF*YZ~V1O2w{SQ?c#xNxT1$)ZsA$8STR@~lW0*6=A3*-i&xCS-@A zUiUg=K>lf)U9JCD6Ryni8^Y1$|IbQVd4|JLue5tS;pi{l$^IFqYj1P6r(X#ll2}u5 zg%3DDb=6qW2_wn{ZMflSatVUEu$I)}KP;bD2#&X(r()=QOp1U^1GEd7HP*xgFX)8o z1SW3z_YwFXHjrHJ^W5wQ?|4J0_|Ca~^;oy-jD1;q*A&4^Z@?)ge?xs>WqMFrmqmy$*F z&XMa=Ev2Orup1b!anu*Ij4GZ2Go_xd@noS9cf4NM+uDv%loZ;^EKA zWFI1}oa32aMiW1Ih%r}H5dk|Ie0WeK<>;tS{?j6f>}TdMDtzb;JhusA4MU(3b)Hu` zx+ayGHO3%rTODtwOVvAyAB#C-+~)I>IAqLe9%<>U=l7bX)m6-u++&YnyTg==pefaR zLPXLcx_~BCj0%bPu5y=x0ZMl|DS(%QB+5*nOsp|moOvTp$ij>ZlWEqVTEJ`5qZECm z3sz3B5L^wSHBt!cBW!w)X1R`7*ZTWvJ<;aw?&D>RdkHU04ZH3L7O;l5VevR9{9PCC zF_4)x9b`xUxc-7Mbwamk$|JiXah2Ah=X;llZF>gtpSk`YqeJ2g!mB=LA^+7$noc@bPkMyIq@nx#Hbe~x11zfM( ztf=2Csz|vZQAMTu9{lf!jw(0 zbfL;^g8AsmrxL9#jD^zpoLD2ABfb=fQ+uc4SmxN}+{bd=k^E{HzKU9du?FQ^**_5) z!xoqHj97LUeOu(vElSisI^KG`lHPsU=yKieQ>Hxfky}o%_KW8?@12pl73<}W%f#8B zaFXrou20vak{7_Q?M55KA0wMHjRV6a7Ym=eRT6r0oRoDIaC53IuI(ySh)Fq7oiD*M z38rNc^9C2cD@=96MxycTS#NP!O+7;dM5wys z>5$PsHb{)291$UF?l=4BC&|@BJB~=VUIvCXEY*q?MEQKD!xKrEO??<5SFHPys1{Ax z#v3^afqV#r7OCGGdSl7U$er(vhA~&TnvHs8=JL^`B2$z}4Zi*T_EKT7vvOkMdN9KS zxJx?0idMMkY|^Ek@2^`Fa%fUZ(r3`!JXS-Oo#J`u476EM)2%j+Lb8>rcphXR=goPA zqa)J1GMmpKbHyB0y~3(->J1d~pYNg%pORn9lUjC)%Ep~? zmGv0tj)>AdtH{+3Wb-6h*nV0(-__) za3d+HHr6JZ&?>mwZOMYY@8^TNnQWpM3sHXx%LccC3T9mJ4tAV5RSop0l!m z)*<_X4-KQeyjE(wC&OA*@;HM^P*aCSURbj=U%_oPZl;eCI0q`VaB_%}cOP@UFTNC% zSCehDVx@U8m^JLp$OJPUE{(jdyi6o4rd=dFOtvuK#3P_?(s^t1)gP+aLv&fd%H(yp z9?U?P^O5>py~HYuCu1{HrW;!?2ZqDT%H5)M%_$Xr@srP|?so70`!_+2;Og$(G8)Sm zk8XZpAW>ae%7p3d&?>wCp1FCOH32u*9q$Srw^(CI-+=x<{(Zns ziFh9t^07wciBdn|j3#{`I+S0k|29=Cr0`dFQU1ufI|Raprk@a~<{ipFpr7WAKI~R= ztE#8r4K3_)e0WFTCjwO-g-Og+Cz4@@7qqtCx-(p!p4M>EE1s6Il^90Z3_M39JuA0( zcrrY9aklOVQ1XwE>ne5y&jYu)=Vza^3PjH9T>q>gX9QK;xuo;NPkAz zQSun!2{*2VsTE)bcCtkL#Bgb9F27X@)b(^GwW7!i?0g$nIj(eK3@luI9(^&p6(J{M z#SDciUVYabAYeF;f#P>o>X1^%H!FoP1bvI5WL)CurA{!=m$zlF3@d+Y!AC^DW{MAk z#!;lDdjD*!o!VA=q)qyO(@>R43W3X&jhk)#+Q&+A2O8ZS(^UXj9-pePws^h0(OE`)J6B>LJY{-#F>V){b;aA)#1X>K7?{lZ6aS(xF- zw^W4=!Z-};aA67GDiPlKX-AdW8D{qK=+kAd+o*}_BwBd(ZI^gi{W=VXSFVfsJ*}mh ztYx8QW%uhvs@!a9E8-v`rdSLmggcJtnXQcwCAWp-ri+VHkBXb031iNiUj5&DjnZ*W z^Kde>9u^iunCwz1Ky4L`vz+%Q5<$xRwTL7)h;OOJ#&%_MWaM~lNL})Lmq}jJ`f=Y2 z|I4w@HUkq?9v(02znTPzGJNze;9#GF%1RFOt0>MA+A}AZSiJftK3?}|YAJGd@jxZ2 zGlWC%C3{G+Am>kKXqK1VT*OFodz~bDSCjiG^LVV30L6k&tfrWa47R~V{-{E!cL#z( zF$%3o@+N*tSj9nU%Zu)x22uxiiWoib1`VauRw^$w9x3m!cn}ncNS6K~%gM7yQJG!b z$kUNt*ZWY!@Y&N5VIrpFrZq(jX}KUQP7p-|!MaXIB3YkFv%U}~#a49d1ocO&j9|sX z+auh`YD#AxdB@jy0hPyZEAiz*2z!0uSF-u9{N zeN-MZ0A+>V{G1d}N*IEv&j{>YU#6yeRk9FOx!yI1U{i4GjbctOB|4BJ@jEN+n=Sg4 z--Y<~DPZ@RZ4_?U@AAsG^J9eLQv=wGo|#OwH*<3qg?P83r4WetGl-m%gO$jO$?-^z z3y+;?j1LK7qQt<&WO{6kR@8fVCODkg)!6vDWkEfC_60peuoT7re&p|FxUO4|TiL~* zfQzzOw=Ogs@8$Xg9xrDQS$SvP9sUP0t(vl+xzq<-WQ@?j#`<4FCV&GkG8--;3%`Bi z>LUC4ivfIRnGoES0g&dGRw|(75^7Cm8&w_hT>=9IuSL@D&i=N?Jud#P$_;~`{a5?H ze14?VIHL&~@`;0ysm)|(3jP7Q=cYVKwvy|#dui>2>Xp`?eBBHye zFD9@(ccQ7Voc;^BXjtC34fm0^I4F85KT-1mH^Mj0epN12iTNecucG-3ZDS;b z{dcyf>97CXkbh2LPi6gvDTI(R&<+#JK-$zF`|mFV9QEUwoe!H`Elt-gbNQ>j6JvbX zbnG38*)t-TlW*IOW2VZ|UgwQi(Hq$YH5(u)$Yke*BlO-rhp0S;FG^1%no(cvfiZl2 zp-tU?t%c`i;+g+}TUp)le??k8GkzQMS3UyI!(?ziA0iVU&`O$fINmM!7!&-B=giHUi>E-G( zX)!9|33;i<0t5(ez~~bEzV`56@%T^D$ixj^}5w#8}hUPJv!O$A>VJg3VQ3gzdL#a@qRT@|s32h~c~ zuUF;@Hyoig?pXNPEiGyXCoHkcL{ACXTI~40R|xXtQN-qY|4Cly+9+O08Z|VZ{WWto zenx!fL3Mql_xa}dS;NJ#secOld#m?$JARAv2f8E~zY!;aXg56RLq^}ZVEW5^v-5n( zx@A%C^uHArAuIkJdruL;?Tl0_WGfe-&%E|%WHKs;O`O(TZR+0672p&Yp|9`ifCjjX zkU01r*vNstY&jB19o+=JWia*tI&j6)QUSZ(l9H0{zCI9Osm%e?M?xFxvA=E&;G?lo z>gmUn3Wwi6*F~N6@}jD~MSz(j;8bAL`KmI<1Xg(TqA}>Q!S0hIEI*y9AzUDRKc!>6f%`T z%pB{#C$Oxy4bqBUMp%%2%->cWJYdW*Evv4o`fPk6yD?x8&Bsy90?~nY+m5wP^1CAC{N{LI)#tY+R2TubtNo>iLH%|eM2{~`$4#du-yAG?&p?nGH{90S!G+eOURCUP((57ZL|`AeR|0XN!nq?9-4xy)-eq{49Ou zI=PN~LL(39D%tgqiM^Y4p5#A2ODFREeX#8an@se-l<239Eu1f2%$%>bNnH+U=>HIVTBNykHrBe6y9p)P#?7zC*ov^JJijRSs#J*GBKRIh8UreI{vRimNnD ztUAuBskb*1%+Idymx{TnCg_PhEb;$YfSBMMx#-jW+_vqyn=bn6;eZ=jm(w3Rbw`OF zQ}2dsl4v<-BZ45vTek$UfgI1fO;|Zv1U}cMll8NZQm1`2eDNZls&=b)|Ih7joisDM zVGjjXWTTNGN&T6uS675!1KQ>~V%wd5|7=aW0H9UX6%_*;M_|S5a+>JU0CK*-9L)nN ztSCbt+znUV>XYzuPlxogJUA2Hd4iiI@#vr0qhjCO;6;7LP5-?&7vegTo+*X|uFSuH z(-VzGGyXdoH4FH2Pyh16P^7*9r>9NQ;)_fTUE~iglb5Eka&N~62Sb}qS81U{vFKeN z7yp%+Gq0aNVdCQI()&PGxhS9Zb!k7Ei!H+5`d0YNgvL*9X$ik;1ZQ_oH?8Pv4TKMU zScU)k=Gj|Y|MTWR+MsZHuhYX$tqL*~pbi;wO^rb8 z`Yl*gpN!9=`Q`k+&~I4yt3(!?A*ko%%*^%Fiqy%E>IT(|D{!G;bq%BF#vu)Xdo6y8 zt>*`a`{R%PvYSf8r-1j`+}!j%Zcj{X%f&JT=#oWpKhw{%HUG+I~RcI3#t+ z9V&~LqG(Mf@tJ;uD#aG!lz7i@Tjz=A-ET0g^^_nZ)SUf*>yhIj7KsQ?%uaGE^Y7o!M5J(Bd)|PI0LSh zqFcUo#FL;!($wLj4;dM>N%ux3M6Uh!r$*YFUA`lzszTH(vedym=TrSE%>a08^=0K@fPv`!PAc5 zje1F(SR;s~(x+O0f2e5I4Bm+!5fAs;oSW#jD@cR)WCpA@7lEO70Olu|l3QB0K{F z&JJ!K*2)eTrd53E{TMGA)_?|R&6(WI0tqM_w4}u$r6PV{U^;nrXeS-eW_DRkK5R!(BR)6Ix;$L*pCf3Teejy_!mVRz-q8;=N`}(kv1w;(2JEoZ;TQUbiD27YN9MKYe-n;yCzZ z_Ihi!@yCxu8?V7#z^(Kp+xh#&ZrnEM>mn4p`G^`Z?cqIfbRspoOl<1qJoCQx($xi( z+@LrQbYcg$%mL{@7Mp5APTyeJLaPty;@Iq|2bPNTP9fQsN+^9Z6+ixmGm!NB{9*XX zZRMQX+C$P{LoTcPyS#CCj2ujK5~X&_`F`2d{o&FSjIf<9`m!7InrdNBTm1yO9JSxv zc=dapx9@i4_}L!;^f;)gZF0uY`Jd15l-$ApVIriMYIm<3;_Ol~>$&iu>E@y-;K*$h z^<+3(UmuUZufxafMXh!+aYz1*dc{wru}3-6bsl{^J?OGBpn}^g10In26F#h-rjeuO z5kQ{IRb=nbiM*bRTxcWHD45+TZUrbJ)q8?;QP;2EzJae`#W8k1&;5=^^gf#vt@FLc z&OprJ>d3kFJt_jh{ARI2KS_mBl)e08Ns?N+h~_8;mk{o%!<@E+E^;WpYZAu#3FY=T z`>*3=ziVcSKe^LPg^j*RP0hgM*!q36dzr)X@`}e+ig3hz%A}V#n&tR#MNw;{8fK&0 z%=cJ;mnI&Wzb<_fnKjnrs4oE$B1!a-##bp4We*RdD!BSyIi=GQ=MNFd;5^XK>@ZkY z!{EpusghGV3|44xWaF8wq$#iIABl?mntG(b&d-GREe=&NVqi?}wZnphI@vsCLO!Lq zhZ9Wnt#g0@h2<~E4L`X}pql`@vXD4lWY;qoYj7-Rn)VdkJ3LdE>)&oLEH>eLkFz6} zXxPBapd){aMc1Nrkr$5{Hex_(U}~sz+^P&CCcnN4S^R91!h7Q3O*nss=u3()c+T-s zhmSS@W+5VRa_B&H*PT{WE51fSk21+lSC{+odCaU;EXN3Vo)PE+zLk)6nrI@?)<_4lri$r35*Py!HK#hRb+U`A7OB$=rZ>Efr_tO zHa;90&Dbho;lWs5VU9zbI{5Q1yaUdU+?}Bo7+o{i*q0FKzM9Y06{D~h6|1!C8%z-p zi!L2fEBp=Uf`vq5=el=YWDlNyxS?go5BvrDAn?@$2dc?%h-*JL>vyW(XJXK4tZgdO zj>5tFD|qMSYOl)8e%W;tLxk+Ek*x^L`byL56Z)HutZBcKX~(pO*ztO{x~ki#Fd0L< zn*HsIZDW(!sX8A$xZ>Uup=L+I=He8bh0*KPiH*|ho==xXO+-K=lM!%kc72)2Gu>3x zXj_GF@rW@DvbIO*h(spgd?CH3CuAKL4Y5tGA?}d!zFd?8=oS5S+0E(sh8cKhHvS(? zXBidM_rL9-QyQgX1f-->8io`RkfFO_2r20fhZdw;LSSH|K^o}}fuTbL5$SGt&iD7M z|14kl0vAg-XP>h_`@XMhtNrky!?pQgxROZ+7f|rnFh_Ea=*w#p2=s$`HA+3sj*>Jg zmYeJj!_9)q)(%~roa$RwJWb;uwF85Pk`t*m?(hVy!}MkSn8kc6p*+tU5m8Y^Yd^mm zfFRy}GR!6M?wz(jDaS}-!v|;QmlLPD6?MS0bBdRG3xv5=d12ggWLLsa__@6GtTAsp z*G!q@I-W2qb=?4!b#wRn2)1@%$#}DOc=zVdhN8=+!JClRysA6NYRy)EA|tO4Z@x7# zX}7Lu#C|e8!o2P0&d{Sd>pZ#cCXweFfeKeMfk{w5^x7Z(bNH1Dd?8(1ez=#Z-tCgp zmn67fwYm(%yHTJL8I%VxV|wv$s@dX{dHwR^G!s9b9YYLQ;NA zn%^mda%ob)eVz&>r8LOMH#0I}4GRi>5%C^~zQ>=Rv#k8hK_e=_XLt2GrQLpN3$PLA zch64(<_=c;tAO-cmE_$Z06ham!d=>q`+?dK>%h0&s&<}TPvCXW&eoO;|L;unXV9c$ zgZ2Z7yuG(Xy2%HF?mJ2ETAfJHXGXKQDXLNg;c%f%Yw9y(0aHjAJGWPydZXUQ{V%Q! zF=~8G1|ZmEu6VGUrt%!mEAjpOe6x%^wkMKMmnS8*gqUGW1-e#IK7V?nZ>3KclB?sd zUg{ZN2a2}SH#Rkn=d2hQx(JHC!Oa-pUPJde+q-@e0-}0Zi;s_c`=MfqUg0x~1(c!p19m6?Lr_j7~ajVf>l=q)K6hnB=UJGiut* zyJ2>${Qb-ui;Ip>VZ|wV2{KqCCIU=`$8X?G;2|K&63IOTGOi`cPc6qEAR!D>oyt{v zF~JbHnUvdiYKy3Y%>~4*E^>Q|C`o(&aav(y=(uy=cGogb;E=VoU1tZYQV%hUDg3zo zaS`=?&VOPol1d-;(qYMP5s z5)#}Lz|4uRNP(8XVo&;Nyx~**w+099WJ-P&tcA>4LM?X%sXy^!UjLr-H+|eb=o^^JW;EBEK*4?h!b1^XkY8X5|Rk&hYGfZr|j2 z=zA&Q(!ND+v=pBBcy1PaBADNPnaAtmvTx1PWI&{jYFYG$4N{XUA1HRw#e3l$y_;Xo zT5kDCA{n%|smBnwcNuhfS=D?q+!Q>q6!aHoEqFy(k3EbttcDpIf<;=5O({F8zui9Y zp<;T6rTrS%_yb++f$!Y?@F+4|_u^X@ZuHL{9SCi7z9}tg<=4EJUhm;Pz%>G7i!k;- zEZGM8MSIvE2QOGlh(=xqBbdfV84p){YL?XPxh zOg=__l9}*3WewJtT`pt?+~{EO?c~n+2%|g1_}nJKRDjW^q%MnZ44p*b{WzYvHSl8Y z9dKq<`Zm82#4kjEJYfv{t5Ds7?d5TiG$1n0+Zf;()65Jx>K-iuz@?T<<(W`z?*uw*lTo<8bZHb z!e9Y`jlpPXjiubfCW2sa2-F-K{lE{iK`v9Q41cWK=0${Iiu;(aC^tIJ>Tpr5roQ+ zKylHaXoR)Q`)SRja4)M*Z1`41TbQ^YY`p%7KK8e?qG<3zeRLL0R;V&2LV6}i9T$x> zr$#Z4oQo4&DBO>Z@BwK%LwY*eKgKSzQ_&(rC`Desrmf^_<&$XTyIn6TMK$8s*M%!r zRV(6onaB52r2r>y;sk;qIrSt)gc7B>dnUc^*hVBP%-NkQq~@DK^1j+|_3G{Z{{Djo zFNb{G_lMutfg;lHDD)$rpvT(czC)rSPwg7Vb0ev|dH1sZy78ZmqsHGm2ii_Z>uvHM zTOp%4IsdiKQQ?u2vP6y2XdXB_yPw&l*%;_Tp%hrPmGhX1aI)_HVa1|73T`Ttb+If- z5hZ($^R_{mW1RM;l9*VyQV45-e4#QeNQb?SE+F2tww6yTq6kB%VB@}fRGn+Yqn4Q{ z>RwZ{$3jZK?frof@c}JLa?V9UGlmY)0;M4I0b)3}z)9r(p$`trFcW&JDH$Lv?TU>1B+Cv){+ky^5P0k}KCa&e?S&sMEz<=(jJH0FJbDiVnzaO5!CKju_6rHM zSo&Fx!XV@N0%=Kbfr-61{_zN^8EeI)=L4VL=KBI_@P~EchxLBZ)gup?Ti(uFq$>rs z6}<}8P{n|~YQ>L&(b(dVyw*y`e<{JGY(f88G;|2`(s*2)ooo#n0Xb_`IeVuMqxlB8 zq@W-M%6&Q{86LwP#viq~e*thFXJ+C!dAYeIKf^m;iFXn7ulek}eN6a(*%|6&0u6*R zYw*?`Jtlh#x&5w1k!7}g`z1as87%R#qssLv*|q{+8-`|0>Hh8F90(sWemxqw%)ab+ zGy(2DqTStag4dV8K&1>uE}wv+4#%Elsz8w`n4YC10`-Cqu#afp<{MmHToS|)KgRqD zaxaw15_50mS@0+-kmWFTd^8_=tMckR}DsdBI zDltJyAYr){IoUi>oQ%OdblJEh$bZhni>A)|`Oj~S-GJebnfLkcL}^a4_Qbk(CQy<7 zvf430JUJnB{7<#p^AWvxt97ot;uzpB4#sJ2(^OU|pO;aBPf60vyk?W0D~pJT0;2fr z)w8cH-=-!ZgpTN#S#aYdRx6;I_VfC5n>EwqOY~3Ng@c(C4<3O_Y$yc?wfcUN9lQ6G zi>vkN*QH#S)+PDvw5RD6Y-G00BOk`bCK`=&B~`8Pn_zw|C$tEDL}3}4Vf*{zQ2&EW zp4UctbEZMp$iwe=C{f)GKg<0)%g_i^wWH9&*Q*!f`G*)0%UH3%Oh~TT(?DY4J7P*O zDW=*h3a%fa^LgpLBeo>QVXO6{r!_905_UB1kg)rv7L}E!wfnYOwpcSl%>AQ_ZqDeRIc#H) zBwAD?Z^&>>4GhW=2tlb6K~-CeAr4|Ft9u``bM5f(EMuXWdkh?}FsOR=IO<#B2oEt( z#P$4M7kE?g0<8uR@Qm)Ia1wBOP!VFoD!BS)W`Indq_RSSxEM^9nL0ikm(0Lwl8SQY z(jQuNI0#f2+XkCHcGx!z>a!FT6a-lX3eSXxC0}HN3OK`Juz4!?DN3};0+=AMICmik zLJmUs6Ylp>Hiifn)4kx^SbR*xI$`KY+Ut4-<(Fj4cOQ}40yrL7wdM`^c1Uo(iBld^d4M|`BX^&w+FZL*y!=H z=0&GreJO%X->#PXlwXa|*OaM{sqJ>93E&$NhVizpwAmYE6X;|8E-D-et&WzSa3UES ze%jkbmNPP}3ml~%8mu|~v2z#fP`b-bYk6SkFnyh9I(}sw)<9JiByXwJn>79soheKa zF89g8qS5Qt-{qm`@otHD)qBqM{-fE$!Qs_~<~eq|7hZVWjQyxeY#eT1fh~$9D4P@9 zTxlO`$g9$rlV!x`dkkn!{`8hl_b7FN>ZsiDtxarmD2ss#5%20_$%j?~5CU$G_`&Da z2Z;zL#1Up^E*u+vk>|59E^*j$Ixb@UD#(^6mVCux%5c#Dohx!g%Y2I^3 zPf_j1@Z8;HcYYdoj%D1C>@y`>qbl7AA_}ad<~fg@-Zz#M==6bs7yE6VSdnm$jxx(! zvDD4b+n^JGXvK{2g@$L;^I_rb1B+1nJ~6|?a<0U7T26X*0^x`wBe=jC%X6{AUdr#! z-gLIaldiqJnQxKeSQg>hjq*uVL=_(aC#bDQUE(^DHpUO6wY_39MuTaY7)z!ANuzNwBDGPE^H?BTYG)GBduHM7Q1zbGf$eHv;b<*bqQ} zolO&-t1%#!j;?vZ0MedjilVsrta7$G@K+eq1{<^{G;}Gt)6`GeE->WhIIB}ANhUeu z)C~`g*WF=JWCruqH`FvXG<-n_O-(4Wx0p1D6fC#|@O^#ySJbJt)>hKr&8w8u>8+lQ zi-`M4cOTr^y$LpPpj)9B5`kMdo>4pcIUQGtl+nGQq;6XzEzMf&(^v0P?{+Wmq@MBh z9c9ME_6|8gr|(K5?^Zn8A8N1ALX_jcOy(4_e1ak#JU)qtVK5oFf&%Nt6^iVWI__)% z4JHdjNEWlK`;8RcfzxH9$j9~|C^VFE64OGL8T`7RX!I(%?KA)_zxzBi?<&@bmh-pG(RI@!d8Ur z)>_O~R=L{Re2D=BIM`*fAwx`WSzVkfU0uGtc-Ec7U&61-cnvFj9Ky&YrJAK^zSUIZjzZmZjyvAX*| zkwKZ6Ec3Q~lls<~MaBv`8yffG6gB0abSPiTY**Zr$qf;ihEmwwfb{)TXdq3{_Xu9B7RMY>x zOZ&Q?%F0+*xM8f$zw@e(fNS@iN9*EgD?69d6j)DhzywM)g|PL}K=S4aDQE0d z6jV>pIY-~vFy3_SGv57LdYdPCAKm#dqb&0<^ddoO;qXa}?!tjOntV^HTc!uK;0wI( zWyL9iU%Yf~V-(spvS4es50}k3I-w+98~c`Y=y?D>$i(RI90#^bTLIhUsRQZ_{vNQ2 zhw$BJ=?p%9e*ttWz~nF_HGu5%$4%L#6Com{oMEaFJVWo0DZr;1ela3 zMqS~vNK5ggYg}wi&A4!l!HRx74eKC4hl=CRB`Fdv68o{)rcJ8JnlVqwiocGTb0l9e zLnhoXQOm8Qs#)Smz^?>Tg+%-wbW;b1W$K6gDD#4`C8#`q>U9LB6R))=S7=>n_<*_a zX7RdkDn#|)<_>7RW&u4s;i#QPIHtya>PE97u47_UF1ZfP@HL`Ptlx$;s(=2{TpQ<{ zpN-=MSiZiT;?)l_b;9g?a!Q%j*C%^2Z~vw`IDM{*ue${ zYG-ezQ;=z{G)Wnh;x?I4eBfl7&pN+y8FZ# ziB)aNS+>X&kI1NpK*YQr72osyMH(9;5RU)9sjaHVfM*%k$nHl=3m{RjrfRuw@9E7x z{xH{sQj$JFSo}+Vxwk4TC^)_2iGGS1klarV%@h|(_0W)Ob0sTC7<~8fX9OmtpVJ$hA4M`?y@ajC&mKuh>BDkvNC zchCej!2NPe$D$pe`%O%Ddioe&?ZF}hcWMsauTKzipBw7Yd>N!ED%)>;J#Uef`lYKbBe%cO3|&r`=d!_!32y6tR>sTlG^dox5xqmYt`HD5)3vUhU4 z7O3suk%}ifZrTfOM-$OW{X?D_T$H>>Fx$IrbIKL>_%>>&HP+80>Gv)_j^> zI`K*oiokSy=c4R;w4BL6DuL5)-@81|N7rbw%F{a5bxVR7LMP6L%`CbZ!c<$$UWm^{ z8g96)6A{SA$&w;owD+>S@QO-7htYqbQUlN7B4WKLF440{{4HBEJI~_ zA9c|D0glmNK*?0?yE*?Z?EU6&(cIb*{iW2+)^EEsE0MtK**TX>9Phwi9nJSRu6GGd zpT>j)NXfpS6;Nn=R#X5^o}0T32S%UqaQCq*YJH-?++=DVA^9?Q=my7baFi!+6NdMf zxzoK=!GK#kozSWpwet^s0Ohd4-^8km@@mNVT3Y#H;Sw=O6OKdBG@Z6{|2CKZzI*7g z@%~B#yj_VaeinaTF!gc0;ay5Mb5oiE)!EG(;lZ4jBO0C2DO&&#Wz=JB%?+F0zN*tk z=Si3x7g-#C8Cog?qc9~m8TZC0(0qshhnqRm=@WmNrS%hS{Zek8;}9!Jcb^I9?S%_Z zp3&Ng;lRR&RgrZTS^BS)^diDpqfdRkT{LcDw{@F%I)A1|iiaRa?7mu-HCfpcW{gS& z9_*37NLac0DvAfeK*c4!<2Bg2&c<=QB3si)8Wdck-@m2?QFU9;8y^I1%>@Ov&hak3 zL)p?nDdLAfFJH;NmeqV383MxH60eR}7srOh@zFw3+2sVbC-sVH6e8hXXLDxWvobyd zi4Wo40TWFo!MQPp@>49_a=c#GRqdwXp!VdSrH-EC<&dX*C^ko^yuuAGe=X~z+l+jc z?BA^F5Egt~J<|_Y!;d?_?(*&ZW~N7M{@o1Vv&fu~{;+p73?O%G6-WNOlz)NZ{DhAc zT@)mmgy;ZJ6nX#VJ+WzfNhEP;e+#K?RyVf%iV*S1Ei;6NPbOlwV?t}NlKzuZ-GcgW25eqsMXu}cwt)xLhR7z7^c2ksjfafPmsD54glak znM~iRG9si5^r}2t`kkr`@pCRZI1O5t&2s{Tj$9+^Yk_VO-n;f`mCYHnx6BWl_d|Tb zsfOguA2u#?*p9V>E7FP2ReQ3v)9dfz_zS_{Xq6{1JR_l%H^uw7QMi^Y#kEdouhX7! zhCUw<%MsiA`l<%b(qu|?+e#h#X4?9jj~iSorg=JW%l8W%QgFyeRPk<1U$6Mvu5Rgm zN<=99Ao%FP!*0R_S>*=AGQm!_5XDu z0?Ez$2j86SNKS+vea&`h0bUGW5D&7`D?)T2gkOeg!PPWY$Pu9J-*J0*Ygx+uy?onf zE3xe`u)6)pE^Q((2GFHf(+zhV!V3*i`$dx;DGAKXy5GGXA$4e3YTr8|4WH~~wrS4I z1d^D(cjePdKm51ZdBfPZu7SJ`5HSiq)C=0i2|mIRx|%0^Nga)bH>UCpi}%ML>9;Q+ z#|G@3>Cxx%5I$Rg-zY}MX0{2i{CpaF4Arvporh0rb*;jX`mg`<1VzKei|u62V@<1- zp0~BMWJNeYSiE+^J)f#-V97%^rjWY#2mLNKVD1U+Z?Gr(;Kqz@WAJi^I$;6Q8r=QkpNdf*!M8RZT0IK%VWZLqJ@nR}2Wu83fT1 zQJuxn7RLjjP$IwtjooHW`p&VmtvKvXD+hp@vS>NiU0AY7$^+$r|*-tcli^x-lH z)0c905{3Hq4!3_-Zg97MT?YqeDeU|M0$e)Qfq^Tx-~C;h&@)HB!1+FLR@}6x4zk+} zA!GT8`~fDfSsH5@;Xgx@Ov)0E1o6!%fiR1z?T;Ad%mmn4AWZ{m)gn2LlVtIOvs)-M zwLdJbu(@D>96lXyjDwS_YJ}DLIg9^$VL6p%XJQ4xxfaE0ce&+4Ne7WEVaqw1B z=iSu{hQPa;QjI*h+WiAU?WcWqxFK0&@n7fKwoRIf@fpzIYJUV0Om%RRGM_zr7O!|1 zXpmN}KR#+?WK_WgySEUQl7hV?wRy&C8gNryn)TIf-1iVz!OYdigs@HWO4&~%-9fgi zrez?EH7QDM;+tHDJ#iX3ry^OU7=TZ)_m8S*4TcrBSR zz2&QnR`uiGxvezx^7`07q{;EpK8Lv@2!#0g%(UHj&cfn+86pOExb|$7HhgJmX}sCQ z{}L!#^Rmhe?Xx#jF8Eu$1OZ3Bo*Smc{OBRVPeB<9CmQFgMKw=VAy7;#q1rHP3n6nP zJrNhk-n)gSsOn!EH>rI@y18x|1yuBnpz4H@%?|&o4a({0I8m=!@kflg~KNKz;)_ z5XhbH9+q)vy^)cTz+DE(aA+_bHcqoK@rAt%1O9&h%iPZH1=mT6nZb6zG+ZTbdkDle zQpxmwbEZsH`YWKfRGt=sbP>wjgv(sD6e<7OI0?_c8SN|0%TjQs5U3r0Rn?6x&KsB% z=yiM-U82asN#Xka55lElW!Kdqtqwq>n+9C@VYhPe@6R8jj$H}qlcdCe zr6;07;nHR75Ub|=qc1j0e4C0PD?5CB`50LuVf5wk3bNME1BtRXKGU|;G?pQSg zVa2{_)e?_M6j5c>$L%zfWyVv z!=;1C@Ap0zn?o)OKfl_dv)AUG=uPC)!mIh^qp6%j7O1mrGUW)F(Sb(Im3gHg9)$B% zBN_$>O`z~+RfQwp`~Ilfl@GpCJWD)HWKXn9S6tF_1^W9lOa;|3Os$&*MZPR*%fAgl zIN>ExaWF`?nBghbb1!|J1)g#Yr0=ol#HzP9PW~wn%M9CZf7s8<%}zA9b{1{3u+lfm z#tX;CB?x0t@Pj~@v}#b%_E6#2*w`ZM$_8c#Y)X8N5WDBsCo4@GDp8#=K@N6}4mCK$ zdXTA54O3TB%L2z58fYTr^Oz3$;kgLdv+$U!Ejg>^-qZns*G||E+y0L; zQpFRnpvri+hAZ$ZDSF@PG<#0+W7F64PoyB*jeY#D`Ljk*R!j^vFx;Lp70N;d6HI5l zZA2h4GL6Sa5#|rU7pp?^wY#r~jbQuj6YmE^-%1hNdlumoydZp2!2hX$MSub?xzJdf zH7Q4pQ|3e=DMjs}jEuu=xW-0VcY&kSIBg$MOradDqybW$q=J`6D@~kUnI=}_v|C#JHzGCyERlEb3%=OcJb7cauKhDJ^qlnQ${aV-wVlLg?|m^yJ!8& z^>GwJL9N)eDt@663Srr(5a7*e`o;-R+!%r{)~f=y^ceill0FEMq2Vi);Zrarfibt~ zI4EfYU9*pW4-8;+y?yk#%y^C)a{m7GV&(Dn@j7_>&$EY3v-@4!x@NcEQ2;mWgz@pF zYJc$Nk?D5hlZOO5O3nr&!U60Gxo#s_^iM%~am$}?&*6`Y!k9G|>1v-ldul2r} zo|@L9;+0+=e&}0zv#TfbJ&=p%`Ev_w%0?+=I8Ze48gID0i7s1k0tiK)#s!6h>iuT3 z+PGikS^`}(v4q>(+eCVarzz#m877gX37dx za;Dt~*)5&fxkEDRpC*-*lz>MR&4V8P00r<;wkjCX1WKv}mmvxP@TUR0sFy}fhwwu9 z0+!}Rdm`EITm{I5v{R2E?Y8k`vyv7C(|P-*TiG)iq!Pf@QAlpBiL!W`=n1uywpbJ-_ zdR2u$Cw*Q7uwB=Dw{s&SvE+y-ZL_`ts1a*xYk-)|^@jN{Fo#7k@3A29_{V+DdHXI@9dAb+Xt1^XCm?0k1Yc$rkBj z^E>W)c3O*jxM@tqc*ZFp$6MSG^!Lk05vO?&$VN++_hyE#ZRWGvyL23S5qzD0S2{mt_f4by^e5LFxvgRSFDM4dCBuKIt3SfmDx9J$EYdzROYcY`08UY0G#^HSv0Ss*l`z_ zV$O3X9Xqc~ibmQI<(5T6L=s?m|`6#3%-Xkdm^Kz@Up?v)S>k) zKJsg(ur7n(^I-~qrk`rm?=>)^qLluP>AG-ru_Nbnk%m@M)&|%SHU^HMNPBRPynV7* zJe{7zg9k<1Lep4IVwIDtpxew8WI+@dU336$n zKWRmrh5Ge(Lv$zxoK`lsxW=0ekx}f{^=Y-$$R2X?Zezbjy zMs|UzoJdV$Q#AuZq9?>N?-0h`F5fh&{hSIJXlvEc&82+hAVrfkA*aY=2X23q37z$>oK8!jBiU`zXg zlHzA_r4&BcMO}4ed0R8YIboUfr2IXJQv?CVpnw3ppyih@xrW5bKyuI5Gu$-q86w#T=yJ;dA4fS;u#GuWXBH?Q-{^0 zE44QR=Ef42?Y)IqEsA}>a0S4If{&jCYo*yxz#zu@`ro~FQCY$;IBv~H<@4Ic2h-A# zqX0iYKQ}l2gx>%oW^VWVrBNeGeE-ko<lx{QLY!`L*p0Mfs%uCBp$f9OR%U4F(=HgP=b$Nx z9M|t=Ju{?n=$14#9G66!R~-tG1UqW0aU6~2X(@vVLki+5+#x~@6jR=Hl~eY7dR&om z_T9_3ctP+;b6*!`9${+Asu2mI2cMFyKBE-2ag4K`ZLI2q3LnJ11h-Ya2O3)(i5?9MtT8IvGG7 z{Xy5`%RNoQc=2vVlnQ{-^Rum+XHOSxdHC!bzqdK5OCA6y1K0zoD3;5jNQ=Pl%$4fdaY)NeSj zA2>Q}WR^*;m=g8CmfLasFjOUQQ5jy10XhrsgXQutP%?XE%rE!ofba4%{MjlP{w#%> zFua=W%VTy73QWw}M&KGtVNXVL9Ut;$E}B$I3OFki@h)n#bsITE9CL`sp(6K z>v3$+(Mc_L18OoRc%fxwEK}&;%5Dm;QuR#7o;|%$B}+29?cUz+4(M5&b`6$+_NTIf z^y8Zl0Ks2#ZeLdAV&rpqn}f;U|@l zrEmF`E;)-h(vTSB)Txgq?fkj66t!Z3sHgDDsxgh0iP^r?AZ1T+sS)dFTyQLX+WQ<$ zsr0Q`MrODY`9s~~hG^6r((hsG5MNe+uimkT4QH_M1flKbh;=gjHA##4SfdxOnw%Mg z3C_wj%E&g0n}+PFBz@zoXt>Y-I-bCv+=dwToHQS1!w(r4cs)*Ggdheo#SjnQ;}40m3N}q|20#R9Qwqn z*VAo8q53ox1UMCFFmywHdlR9u8ZOUX=j3294z;0hfK0`}rF^QeyvSygSwysSHx+f6 zw6jo}92T1G=&5)lN%P`Gcuvr*KJy}}MJKA=x@$%5k*TR)NgdMJ-X-cVXSqv|JR}^0;U| zQntRtW~`(?vFT2E^V zZKkUtcKk^IQvYy+1iXtMTI1E67wdP1Q@LzXV^vClla^P2NrrcK#J~5N`0yU?vx`Dr zUjv?iu~C2u+Um9YR1k>Mq?E80#?y*QANP`5m=J~0c1j*yK0oSxdx8t$7R(moISpW) zUJqx|Fz=1FcXRu%B?#PYq;e%Q0I}^qsZ-(L*V0lT7YmqF9%apn00PTmgI})ZN4HgI zg)SCHXoZtbMW~0_tW4-6e<`C?&9$LYa zJ?2;wJjI53_1lU|m7%b-h{y*Z&B#4cuLUlwe$k5mXAOYq0bF{3G7UaC>LJGAm;z$K z<2mAjqN1V#B5I6G#AZ>6WH-!eFpCf44wx)_{U9)(*tWh;^Ks!wp%}o40>H!w#7+0J zj`jAfpIJit+&nq2yc_}BBsmNPQbX!uB=Io{i115`iBZk{6Kry62fi1uQ8nBZdeeRc zm|<>la6(j=qi#t+PE{RG%#>2MeUn)*V<@~^uk|`_W|a)d?Uo>&*QsWqnUUp1166e5 zhR?p###lZF6X`eHx+6z@4*$7lfF|&o zrY~BT;?6Q@N>Gp%DHK&}cJMM-5yFg8cTx%6mK?$As^f}9&-Oa{oBM7UqO}Qr_tH%( ztw5DjQB7I4w-6K(@go+O<9$aZr-ayywL3Syjo>;(<4tAj9#L$Q(F(<%yreM$zhb|>ZBR5g?pa0lh5%}FDQeT9 zp=dKPT25Mj%aq`Ifk|Gyt-5u2kgtO+HhJ4C8U-bl4V(fFb-$?L2IQO+b|$F(tJ=xp zUfsdMCmgb{mmDjISs<&YyHb+S(8%yYH5vD{O~w3Q(?fX(7t2&k^Pu39T3e@L`o4t~ z2}GsRBC^Bq2`5e}#?g8>8ZWj74;dd}YMsJ;Aa()zcS-REi~GQsk=f@~c2z5X(E}i#y?J9jX_s=745# z*zk2yJtC1SB#|H_zr7p_#PA6e)*H-!`f*L1jMd>+Ko$xV5?k3BY<`$`4;^wi@>KY@ z6C8q>frUBfuM|sHjLl`WW>Xc|Ot|#?z%7?3&{QXqq|9MPyMUi&ffi^{cDc+|*B-yw3Mbs5# z)YDTmkO*i>Zt5F!Nr3Z(x#U82KEsg>3}4O`Et_>T1V%Edkl_2d;FTTEWERz*|2>Ghg8l){-8Z!H0F@tb*kYs!X(TX8 zJK_(?Io)91ZBrze)hV);=q=&w~{$Q3IW z?#W?k8oAOBKe<$G$akNEkCtsj?gPEsM&ceGB0Wq%SdOztM`yOwbEf`4dB?B);qG)o=3?Fo_^%QBH6JaAZ%aGjNW&N8WrhV|$R6{*w+uet zo#nrBgOjJmV{Nbn0x|AGbT(6!4Gs4UcY%kX8(1Zd30#&cAM;x*;hj~AT}8bdo89Z9 zQ58c6Bvvo6&{ECzA<(>N{H`zB^6hvo-=9c=-gzamM|oETs#PZRXK>WO|JQ+M`XtSM zy?e-LocvfZD(>AF6SrChTCX5l79ZcsfGXKoYsE(;trV4wNk2R1F~~VP+BPK#X|i^h z<{~0{d)R&?5A=@Sfu#CrlDsK*Qi0FmsnX|uJz^u*Ts8q!Er6=plp4hwyv0@UzI;jC zd#6@4`KHT!**=wlyDr9(KrKSC3on)&uTH7#6K)7(bNo!*z_3K!I=PlRnj*#r*j+zc z`z&x_JnQE^zRsxj!#GhfY=@eINsdy*+fEqF{3kY-R*zRM?FGO$Eh-}1nBTS`#dHPk zRBeieq+jguTz34ZRsU}Y6>69>6xyIamrP}x>HTMG92iP*#HjZP|BUGi=VK1>9`{o$rdSZb zAh^E|?7SK+{jZTOSsUzXX68hJ8_xGh7Se@M%z~G(6BG_gupzl{R{eE2Cr0Y*fIiOl zK5#H%|Jc!9ECho4uu$0E>7$*wp&cciHDvs#M>F36t5z#8LawzLnVFdZu*~%W`yc!* zEC4@j)k?K4M{48Jb$2&cRlwod&UCzCF8rs^tRbN9s?e)Sv)Re1%Zt~tF<_ALtLGj$ z-<^}W`CGLAK>}Atx)Rq~v5nM_-NLN0!SLIl7ezeeczwM9#m^Mx5n|z7@~rbT7dYHP z8Z`kU=ek)JvZ-H(jDUMQQSw3`sk{53^}pi)fOc8g00D$D%meM5Zb0({NBS7=@wrt< zs`e|@kn4@>Qy?s#nVVTP>$p-93AjXnD+e$KxB()bo}wZU)3^cbc_FaD0EWJ{rkz3U z(cs^A(Z7{>jlc5=iqa0al}=}7Wi5*HRp+es{W3e0GBBdR5(JbXg`9xArar3x4%g%; zNs0db?u7=OxcesXV893r1Wx@{TD&T>IHR>GFhO?LZy(M(Ia;Xo&Ge3T&92(AJNysE z6sDi?2v@$2PxwT&kYwsUj&gL(6O-0^8iLS;0ZxRX%HhyoQ>@=KOf%cw+hrBO<+h=H z6m{ln=8rP>YYz*b-^xhI_&2#$ca92DI#^&H%3{KE-lu$(iR8a}YyWVH;iEP)g3V?K zV3+^?{Y${x#wRYmU@v4EaI9D|160br_ZKN+Dp*tzh%3zj@r5dZUIJdk(G(BGNv8+;u9Q$va$hJiajeemC?k%L;+$-=Tg*C02G75XJB@ zC6>x)SrScy0Ro%GPhL4nwy0vuk|$(h#4$-El=ek!V+MPJnrrj(Dnpd7o#K3Nk-r5A z-ml%m7-g<}^p2wyT+QbDuFYYo~fh*%WwVu7^&Ad#@5Kw@c9G z1m}3bt&#C>tdTEc&_7`aCya2Z^9BND_zc$hzo8%!Sh4-0CPpKF$db@;;``94{!T!))c;{K9y*G0FgaLX}Qp zJLd{uC;B0mhHh_eC_<6=jZoA+h2m3kl3D@78k@ri6DLnHWsrGAA@^$vmEXlrUl_v9 zxGk|{xiHNS>1wHDv%Scp9+XUK8gl!-h*3K>{pgAx zKgKr^0q@|Y($_<850*Qg;A%oh*>8Ro#F#$CN27`aNq-+WGw;M-=pkeuH?+NIG)x=B z5oBb=O|6s7pls&51U|%1F6IS}i}`f5a#+T6M|exqx@sNNKN)pNF&A9M%~Zz}zR4Cr znzp}Me{H2sH((vd`WFAkN*ZzWxiz2ig z7nc-L@0$SM3y>XBtEppt3hEnK+1WuLfC@pgZUyP^Ah2lfd)R5Xwmv=pA9GgEqxB!@ zrhetXL&yymL`X#Bvf6eH@K{4WZMNKf7^!?gwqrVqm8A2q-0b1ncB}-2j(*y1_R!!c zN&%MBdEgN~z!)6xJMASZt^Y5A`)$71f{8I_3>ej)J`1aAzv$ns!csDTYzX1uJaut^ zz3k(U&0xVUX}dH?3uQuAWXq#6!wP#9)02ArU@*_ZJPb)G|pdty&Qa+_f!f_$1$3uWQ6T0_<2GelXrWK7m zgV2S%bWdItuq3#YGr7`q#8w6X5@BU=@Zp~{=7o}f_QA&JfsNyf=v=YCBYwpit__I;YM$mJBp)3 ztC;e|em##39@(B6E+|d~n*OT_FTQ{57XE)`e_$c z9T#t^pzW^qw+AavDFxG0F~~8@`7|59S=z>fsAl4%c@ab9yWq0HvyN(XRSE(RI|tP^ z%0oO^F70*`>A`>Xhn^pW!A5xb3(M2kp$`E0dN^?tVc4-e3o^e}%*I3J# zHZ**{5gTor+lQVNau)wA@3AWAwkcIxN@8PcmUi9Me~%IiB*e^A%pZ7C4xHCZk2F%q z%5&HKTylJ0a5$vQ`1sQ!|8eF;J~gBBRH7fNY|1=lg#nhV2860=t?fRNHz+!VjUMfb zgAfea(KDd2oRi1MxQj7hNP3TBiQx%swGL%qyT8%b2XyK|1;YHe=mH=xo!>2eNgNZ2 z11S)-<6P_v?rbP{&ZI*~m)wHH+5NRU5xl#19s9B4@j~Wq;BogK^mpgkUa9ou!i1#P z5kH9J5rguFzo+sE8oeu+%p47EQ}gXR_#-q19`*4fKrLWnV*@6(sLww)ZaXI5MvNSm zfEE_J25<}yR?QwfEjRM(F+Q;Xvqwd(Ubkhd%XBZ?!&nuW z>)NVIQ|H6EYt%Ez;6Hn3`>nvnqzlmibJjXb8&9PZI&@uWQH1<>UuP#h{q9HiWyj?W zkWBc@vH(zC049DIOp|T^7!qXVW=aG(A5CW+ z6;&H<@fmVJV(63@5C%lLI|d{rWN7IIL8QC88ze+Rx=Xr|Mv!h$Kw9bMp6}ju=YL== z)|~e|@3Z&*ZA$YB&)i}gFQ7;&OTb~Z1;G1c?XKo!;S)xqV&bi|d!GFs{wb@ja{!b- z35W{U0o8Khmxs|?s|-3z_br6BZ_P&Q?4XT<+l2oU4%HdH?i$1r^t=c z=D&V5^nbVjPM4TUy@4j2$|T^G5On^-twtdyBjeji=iQpu!7Gq;^RnH1^>VALUHu{s z?Ta#63ox2uj)e2hcDj+}4zCKZ;>&OB^z_}oy(l$?E*`lV`TQFI24JyxQIxf)MgfNv zHN_VSgluC#ktYTQ#^CqweMn#H$>YaIKMY8}d3>(HvE?~+xTwBe0VB|Mi1*cxp7fQ$ z0;2+g(WMn&j0y1Z0lT)=91*w1+uNt3&yO}@3RA+rwijR1=5&0#IHwBta8lQOjR?IS z)34wg)%&;)yf4q9-+@RM+I*?<1&M#!QwzIpZH>L6dVwxqpzEGGS$+z*?tMI!l02J^P!-zb#-^r}g?nuR}v(yn`RLg;g^xM3#%TO#=IBv(&cU zfB_2aiyabDHpuglJQbOX*eEONJ&7Ld#PJk7>*5vt+E`Aq%IlX-oolfSk7NrAC zW%%gib2xHCfiGM542=^5-13o31{G~ADo`>3T^^*v^3R}2FP4pi=flO9x!)Hz zB4_Bff`6}>>tK@=B7XZ7f6UDh?fCin&)!|`j=_SxhghmW9k2M}8RHR~&CPfqSza`d07OYjwA23C=A~$7Y zxUi?lQmf{F@>b3sq;;4%0^A(#Q4;dY75ka~rOf5#_Hq~uhTc6PghpxI93|R3(YO@L zHVP|3JC=zK>L~XsNB?2kKi;8 zyk?;72g!QfpNPCvNR5Erff``}rwAAXZ92|&rndH zft4fwlU@tH+cnwf{fGIDQOR=<9OE_+=?}>h^t(bl9p>`f0?A4VW(popiMl^UU z=6^F)C265Ao{_GNL zvTdwZTxh$ilyS_KaORK7XB$n?0QL+vz}X8Z{JwV+t9v4PcG3nJStpKHN9%3X)m_gU z;A`F(EK$Avwa)A_$tFynJK&-6QRo2)Qk1cBlKBX-Z*~S!U7u%|#Nj$LZ*d-?T--lf7TO)sznUNOl)Z;O@TemGqfQ%3X>^T10 z3V}vs>e-2H==1h{i^Mk#UyX9R^lAC{jn-vnW@6<80u_0{QSA%l?KXOX0Rv6+uM(~5 zXU-+;y=>Rh_d(8h0nn*vtAqx1ZMpQ`5?oW&xrMVP6fH@*{0ModZhIw!1jXYZAMS>7 zNDZG3uuvD=arD0^*V(CLOe)IkIvef6(w&Fqh`J1M+G&ugH|wSE>`ty_9$D873ep=( z0f}2{;v^5!12j=ko|ehDIbNJFVVVibRzeJV09zQRbSj-3=o30PB>)8q!Vi!W3DWSH zPm}zUBfzGRVyp3+f+a_aPi=IV zCS2vX(ptGF!8!jb*h!jPPbOgFF%k|~Zq&?K4&2Dnp-9e6+{c+h5^rsnwkkF*UJ?RX z(fWgybixj1DN?YSXc(i{fo-yMieDM8fr<8c>bNJT+90; zbcjd)B(#GxNNaXOIt$js!c%ZwE8< zi!j|^Hc1b_SOjcVE9KeRuV8*avoQk$Dn=magAlB?1d7}4`R8b*)v~-OA|nUB|e*_iOE*fEW(e=cSCjLJM5IThW@0`pqCei3$bxq#pNt zx;S_$usl03dfK_a7qy9vpck+OOalISVnRZmH>cZ-RY$8`j;5wt(?v=XEkIHH{QUPd zB35Xp$3N2~M%_8xHn;asalqTO&wla%$lv9&tWnYk{`c*UXFIQ6$J3zaeGpYrQUaFF z0yM>%x@kR*;?Vr1k_|iEv?9(zn^wTsG(4DL}{MCDgkJ3c)=&*r{{GxE`W)F z(c2)G5c{sft8vQu{Ne%_o_uWDuY|cbRr-$pby}DYX+7&fH;xhf-W%BXoR-$8&95(Z zc$lo~;s|gD8_IN_ZI5a{0d+^MZ8H>Q&4*)$X^mN$0&Sj;)X1jlsi9USrKaghuR)*U zEZRxo;|Ng!42hP?ejkLIVtdvZ|*RRH0 z=pgKcl7@K8`PsaPC~%kY+oB3s4)F@*e1zsuup8_^o_okQ#GXM9J$tMW~Lc~z( zs$mUp{*|F!c2<`2#Fr>gHx{aN{pz&dZf>f&VYgR!1RLAdfU^#!dH_%p$Y$L=SMMhG zrMd$4*3z@-o1o{-)@;2ML&9;+90oOR7Mc`f z;aLPs{dej<8aSDIvn>}gg1=rkOi{;pyEdSd0MV>3HR z)fh5lptG@TS_{?M$A^^WX@f!F7h`M5oPwp_r*g6cs*PH34)4Ol^nBk>n&!NfvqR_$ z?+WqP!uqy;Si5PFr)bcPb;8sL636RVCrvA11q(|xX8ik=@VMRGorcJtjC+=$Qz;zm zDXVxXMN;Y;BteAVCu|cmUtj3OqLtOv$to013r6zV(4qX@3Ir=i1|T4yY}tclo0WC> zMzdNAhRC-X1}=P1VbV*eZ1z{Uzlt5!F?Qu`OiGLQnsfa(oBa-&5yk`Y$7{qxU1Ic5ln8e`1@DuC(wp?BI|;`| zJ)C^vIuZmzcLE%dXwx=6_yb(tkaTL|$__ z)chMYn3zdxS|kjDCfaExqXsvD7MT~AU!JZu=v#LGRdIeL>F7UgdwN>YJU78^TC~SV zxi7dQ+0-DGo%)#>B12Lg)YhpHupq#BK9fAzuO0jm}0`$ zZ}~c@bufE!+?qP;>eQB4febWQ#%^cm*!RaDP|X zIDQ5+ofu6XYDZrl2at1pa;WR`zRbmJR; zdHWc8c7{S@3{2rYV&3&5WxQg*;joxBZ)KnkO@p!Nkj@fee!fkuzR!7?ti3MedAHE^_^;NhUUnoU6v-qvSXTq+UUyq$U4jeiCuOWDIRJZ?{%>52Ze-Z?X7#0N zANeci`-Vd@WrT2)R#0{?xPmeI$=XKu@74KQ{S~mE9Rymc#`i>c&YmgdnwZXh;yajg zSZUu|G`c?D{e0Iuv`|7;m3`40WV|I0t#GH~77)M$(X(Y_f@@dT|*@nec`n`JKq8)&U>*R zWdO){2K!?|jw*)pRL++jS8=}CzE;FygU(o zFpdQLOd8l~fzT)>xC3O`RJVgwPZp}>s;hMp~#wKcfx%qWy#t8sF2 zcEe~Q6>2e|)2uKxv7h`JZ@L3RqUEF&CG7{QhSEvj>E;EzEML38Ol2GfG8j63Jt76e z+uPGC6)!)=5)#-FY*Tx@o{*Is=Z%C8IJ=hyOUq??C9z7qP+lYQMw25wg-yJUATSY& z!(6Hi<2N4-rjy1I^Hesoiww(dux0dp7Co$SBDsnTP*dEGa8BN6=o#{2ZJ9^$BI~9oLQS z$sVZv;GN$VpGBzp9poA3uGa#4wy~tyiMRYqf7%#D6!$hlU|T3lUHs=2NV!7)YP9Qq z^mQCfr`JVUW7DiHB5_V{-gejwUt*eu94(*Z8_~7A+6dXr2ro)~+lS3wVB-cX&){P( zJsak$jX0uug_^yu*18qEX{pot$(?u37ri=izwQAFSa?_%Wo+10=c2vW$uCCiNFlL3 zetFJy$$oeg*!bc0f;^M;sqkg@|9b&A)DovD1F(=t5+Jg~!@~mz7W60loGY}*i$-a- z&`Mdm9LC6Ic7>$8WjqUH?(Rs2T6p(Is69Lhkf?bnzmPv`_&0LSyeBAswC)TPPLTE% z#&7{wWi(5=kEsClr)hc+2L}%*%RFgYe{iVO;u%Eil;D+{=3NDrmO$c*Ri8T6XT zH!SC1x@)_CKXTEQDAZ7BO$yi4NR1k;ssp@OhDrM)YLTA}Dx<>L6^@f$jDD4mB7zXo z$)TW0Li=*Ud5$~g^`1V5yH3!{2i3uc)5@cZ)tcFRyg4RTy(=4^0JgW(ZSdD3MO0FU z06kcz)83JI0H}c~7T|d~+q3D5y8@lm2lJ-Ktmt)LFMIIs{VzBk4>-jC75QI{JDLL( zGO_uqe}mcEaB%NF>fA0_R9~6Q5r}#v@fR=@yis+msH}Az%orb60U6sJ0NC-f z;f+6WzK`Em6 z#j>2~fJ6po&N7BLjHG;l4ResLc5b11L<&M5#raY#<_kNje8U*m=(nNgZ_#@GOf4Z2 zW#qw=*uvOTFJS1DbA4~baK`c#BQi%TxS*kuYOuIfcWJhFa~YpMYl9@2Ce{Q!{r=E@ z{vvZlZQHQq|43$Z;)2QadC_~mXKeq^jHNFF5VuY~di4=D(v!$If|4@?rmC2aMRYx?BMyCb)8j)F>B za&}_JYxaa9GHmJvtu>ZhY6j)p&LCy?W*#%rWh|CWpdXql$4xE^HZ|5nVMJ(Io4b95 z*Wmea4pCNWX?@UyS_GO?DF&b@BJ%apws&?c({_i&dg)Oa2Ic!T!)3g$KDW6(3us++ zn6o7w99NxO)60%Ok-385er=?96%IfsIHvk)YDW!eYDf*{+-ao;pYp zO2ZW^9@rw03A!)jgMzyAf__zhhDVvgc#yL|wK=f+j3K~bU_M#g2)WSTQtx=&9?WmG0QQ`WZ1#)+1ExOf>o*Tjpmn5)kD15UFT z@epD9xp6H!YO7HV` zJE)f1;xcI(qmY)cHk-*~1!&2DfRW?8UDJ9w(N^8{=mjyE%=I0vlt(Nbx#jL+U3WSC z8l(l(*oViHr$@k$xDGg%I@Xq!mOcn7lU9K?WY8&Jcv+rz?z^=`EbO^VZ_;$Q$A*>R zVWPUR4|)JQ1)yyHh4X`g=fm3rzwbY6yf(jms4lY=q~@oLof-OCJ7&x&-*k(7_o8r4 zFlz^dL{gX~i3a45gb0U0+_@#yP>S@M)3Qf_ut5e;%7%?UmOaiK{n z+qiU=`5+0VT)g*7ivbKsY4Mt%EB9cAm2U9rV`!-D`+~KV5r~2m?ku8b@eJ6IAdB)E zC5?Ozoj?)T#S?%SbTcjKqe9F!TY~)ibUpw0^Xb_C{&Sr8`QN}cyyt>0SG`r}HRe>A z3Hgos4{J3Qm=;F{4lzpav1SbSg;V$#bSX*ZA~HhuB;E;f?%7T|D1QIMH7NXjOc0MD zo@>r^+&$vhYkg8dqTh0{^ldS_QD-}#cC}XdZ)^K)0~xjKoX^@wwIm2pA1%cIirUg6 zAe@c!k>fC}c9y}W0P>rr)Yst^Lbac@SOscjDMfMlpAKn=;zOMfzVzLG&F&Y|%XIWS zD??+|j~!iYW+pUY+bzk=LTE|`#OS{lFJe=-4ZBREn26l+A@(Vp9fA4qQ&CJrwZ?#& zoDqhRLImV@#Y@V;?Ll30Ii`)NactJ8llM^#Droe*B~-8bIyUpL380Bs1kULcg^^2O zPzFe9_{U*WCfg`zXlGzh>*RhwU%Yp0#a`=Mbo%<^FaIkQ?iQz527K{slJQy>k%!B!i}a&Awk>Mhyc`_-{KUUFsxyvfLNik|6Nj#ax$B)s;p2q3QG<2-d7YGBag0%T z`$0qYnqQWWg!soTlgXjxcFrC1N94UR!>o0z!KOGkoJig**+A?sm)pkHvBTM;?=Z?T zYh#9|;X!g34ffo9@F{5HX$;6$S1N*(USN!MxF-rp0nN`duJgCpfj0i!11HEn%O_3+ z^B_tNZZ6N8+KcD_y)|u^;!}>T8L^Twb_`>x|M8+#xry$40So3mo4xtkRShU2PkbK{ zKqXCw)>o*`*l+GG9)`h*HS*d&g;@Qyj4`D)D|cNyN}?u%0^0(tVKHN*pXfc4wz~myA z&&tZ^*iu&(tAMs*%_L0?yNO^~IAR`njXX*&paqG8U~6HJM_0BlGYgFJf`b_zXYThS z^~I`PK-i^Jd$G&^$x7nxZ$@h{((ob@4dM>k`0a))#GD;-T|NN z#^huew1s?`vgXZF=~mb41q_rEpC!7Qv`Y6+Pe zslrS$SwuhlF>Y++OC{qs)=llvv)xGt3=2)Q>ZqJRx0)}#Bk%Cvt^JYGXfp47%O@CCQXd#!d5* z1remKqFQ>b8X_-Er#VZcAfqcs=1us(hc`#x|LtQr`9Xb(Mv2u?C@_yiK$M zVB&c{>4%|H6#U8xImQ|4p-?CqQs?_5#tXVA`R=bqNG?ylU~X&6S71{#W%}f@00`?` z_nMf9>G=lr;{E+{daDdHg!!|lt;u|E^V5AxxqyI7eWUkDpm+R=krG-V>&+K}ph9ek zcMA6AK%oHux+eWXQQ06&arTU0cDsg6X;fa4juoD!4rZg0+;{f|K$a%EacJ9H84vN; zkX~%v!7RIS?a7?rrRBxNmiNncbW;eSP)0tj*~D)|T#o#jq3Y|Mv&NJYR%l2KmA@83%00M*qUgK~|diPhOrd2kuOJ$lh1o8fH_P+Qb($v%08 zMeg2~b!POWgcw}gj@m2z()`{tF)>T1B#OH>?nwLup_<^74(EQ%5R@b&!J_fLPxQaT z^v@Qck02ySO4tO<@@Um_^bwrgK1t~JeN+LoiFl7PBj3BewCBWINBH;euK%X;#Tnvf z1@$U@SGB(=+sm|Jj3bQYDmlG*E&iQ>rAoC5V~8meul@e?WyoM%ECB*tQib8^epkZi zS&bBk5AmT*o!_s7P=gYEO_iT_0L#skj%u7httd*|IwCOv0ZLRr2O(#LF+tlOGAuIp zhm@liLR$I5nAVMtgSUKm?qd)m~dXeXeAbm3vEvs+-dfo!?kFAF(U<6 z6;5QlBt)Zb-=^<&mJ!YhPM!g<(i8uuyU}LS(Vh>MmR~Eve!l*y#!~B!FfCyPNisGu z&G1o{OPN(HlB=Od9%U|aNIb-pg$a|JNjh;>fEIP?XOBQE^2BOP?;DG0g>U}?2mI{= zJC(M#|MpVb$yz&!^ePpeWpQ!m^#Di1SIP&&>Y;Z>;ksbVFmL zI)PQpARIJd;rhIr6Lj7RG?=cCAj0ZlW!3wV_7Igts+Cr^oJ`eh!JfH(a>rL3jZuTe zc&iUjz7O#=*z6e0ekX?p(F2j%SgVgecu$uW%U`}csi=IGRJP*0-T}NquF609`u^G$ zc!QJBVA5t-GIflcm3W$bieA5tT?bi4f^oouhK}`RtdjhYK^YUBVtFE6FqN=@*(ea=`c4Ki>36l<(Ky@0BTDUewEH>p)91i}qRQrKOV=7n z8ahA?*Uvgh>kAydr6WOrKad7j;}{QS(+is-V*{vy{U|z^lKlf>SOhB81bCQxhyv>? z2%%qS@Cq*%#|(}uuuMU(l4f!f16t4m+R5c!mH%0g4bst;Giil$BZ@0rhZexsvm^sfgJNm<2pS^x*H6deJn>z41V!qJsBHYo$#>ndgTTZD9)<17s26MEV(*b)O-)7*tj^g_ zrl~Pp2oNm`41G97&vR~!TA@(boIT4~m!|}81f!mau7C4G21Ol%m5u2@;wq=~Oor8E z)q}UT*1Sm08+Bf=6p{jgZvG<`E@EZL6XN%-(p@0BBI7;(Sze>uSSE!~f%{s=?MOL? z*x8wpg3}&W`K`@O*Mp$o^MInnak}0+i4R`K#?%yh9qt}~bT-NfzXw@nD(AdDwG22% z=E9|8Fnm*9)B2h_I9Tdvffu%QpNm=@|IVx*Jvg{?v#)2GhwqjCOP(*MMG8DdT%6&1 zq7vy3sKO=v8AKTQ1)K7`jziNITe%VR00XQlW4$5Y=lyr>x)COMv1hHRpmf9sD171gSJybsq&Bqm=3Q6RMPmTe>=?-O9P z9}K>QL#K1I$hqH8KWsGJ=k-U(|4<6L1*WE(OSat4O|yeVcy)=7x5)A)k5W zxHRO-XaDbi&`~&@EUZM1K%pwn9xhi+8M){!(Q6qY9izZ<=o>>{QC(g9ENS-!{*1^% zN1Hyx8(3hyG`bmC>$tmn_|lkJT~J0U>jZcltNkv@-B(?;k!f=uyVjAo&dxkWUR(d} z;#ZpOuHrChJT`hT>0K$^I3 z9$5(nnH{~(_WcO>$S*Z{SSn?E_kI@7rKQt*xhNw53HNsGsBmO!ym{Ro1G3 z-u*9$>%J48J5|-sUOWTOU2etx7kvcuT;!bi-KkRX+fj;GTmveaxgaPuYU}F~{Uq64 z$Jui9V4NWc>SW1(`H zI9#bU15}ti6l)McfPJoj{wqWb>#AS%qJxE}jHb%kLYu$Qr{^{)hSj^}pJFq0em?$5 z`2L)1%&7H^`2Njn#6zv4Dy*f*0^f|e7QlvC%^&v|L)(F;-1vFO^^y{Y@71!u*YS!F zRF>K^zB8UNjmA(>W3Kjc&Jv_~_lG2EN3($Mg?to_Bm`%eK?q%)rOb9em3ah=#WmAe zR#r$Z8DaG%=bOup%NtwMLUO;&VdmbgR|`u%dmNA1X2gk-nnLc!JC$I4NBR1SD3f+~ z62wQlXTLPfH21VEK$^eJMf)Q#h65imO&03X@0it(x*{Dypz9@~UDt`7m*VlU; z0Hkftujl34=%Db5f~H_zTBcIXN&<*R>hYby+a z>oYzRKE?a=V}$`Qs`RR9heSwaZx(v2tr&dHc&h?CI%uWA3x`R^lmPpJ@|QUmuF@vB zbYMwMlwisMw}JrZK=>a!Bdv)K@0yOp>Em*Mqg{y_a(a-VabSBX70e_rP7GpTyB*&$en2#Gv)0Thj<$(Qu|V&rAwZ;oowp7tvH&Kk1tg%ZKajm zEJhk}CgLXgaQ@SsR&-|1C8h}QS~u$9B3*aHyfgrO!|1e-`}LYPK23WYtM6?%MzB=* zEI<&t0&1Xv?3~d^W+%pO_ryl+Q}zdrGhy(|D<5 zbUXdo|76jyI=%B+fBkk4IKwS1i-DkGZENd($2xH9CQ=nOsmDS1=u#&0uEaiST~z`! zYLCAgO-E;x=$fxJfam~yHUBMQ2hw`%pL3fQuWi4dBT&Zgp_Mq)uv-*HE_ zZ4rghNNbp!2`^kBEQ{T;e3tT^ZDNC!g48eTWfbRqJ?4lzBP$b5o6Ap?TDobV?m_vO zK_QU*stCx^Q(QvAA8>a~6*>qW;@W}=@koI;HS z1>{QaOzM}RA?ivILF)2Q0vzLPk9l%N6UhX%S*i}dHYAkJ4r1{%Hau@8rWqWtIkeg5 zz1u9K%bqJjJMsm*F&63SxZdvh-a<%^c@T{t-OA!GIZ0y7X8xjigSevRbFJ+Nlt2^| z<=+{vU{S(S(ouwJ3B!aD@zzsnKj1w>3#g%j0ZauWpl@7%aAjU)1QpgKZpXmsA#_A2 zQDvZ#7xt6N1tum3l$GW49G-z1oAvQN4h75Jmp5e99GBK^cPsZkb`DLXl`y*4qa;lz zp%>xs2ixCauBnft1O+JS${R{u0-8OA*mP+aFHi_n1Y20SF^G??Zi>ueb2JxHK&VBcfQAtZFe+5? zSy*1w49Uxe(~7;1S+|UK#dT~lL1hgPyiB^Fc#3#(Qf#^a-pgM^AlWFC7&b{eDk>i5 zv!C|pYQc10EZ9d`6DFF!k~O#5HK%PowzUkoIj%c-`aUNCFH(-24LVPD`~|O1&anNP zgrgo@)=@d$y_A0?2qGk$_W1iUK-7}U_){PR4p$iIlY9FNZ8oJ53bqYAXii%fz1caN z?DW{`A0E|Sv*G`Wnnx#;6@9(24XhKNMv_1K$2VOMAAGk4iF?LsSEB^L4ccm5od2b9 zX(eQ|1Z|wkbzwh!2S5it7i76!*I#7DG+(>MV5?yWIi3E_tBAIIHvF~F3k4t?Fe3vX zjM({6Wz*lYRej}IK9_Ns#XuDP4mVn!PB5?KB!8F-@gh`@0kA{PfH4f<9FNtpWjZoS zTisR>kJmRgzJT%6|MXP9Zhd2Y``d2AY6i-LzG?m=Faof>RJ9!oKW>%7@}nk%N`kqV zY?zbIi6ljGCYF};fHUe-CBPbI%+}PTN7E)27M5h8=iQUf`SeK<`&}Y0)-aSy6X1J< zpLEfJBmvR~!iHD9xK&7Q(wy*JC$&~y%C4vM4+1mcZ<&jF?4xz{jY#4F#t*R(!0|F? z&rj4d{C%UtNKdcqz{}5sK6ADNo2S$#<|0}CiPml!28$4NGBkSkPQ?zO5Ru!NWPi)X z9xp8|U0&{u3}>Tb#LiT{H$j-jnB%N`~-3;rO(EfE_TiWzimR$pBtpys!?& zd%*hg^j1~kedR3qXx-R5x8FmFqv`BbRaM+SfkhI4=sSJZbxmSQgcwv#YtWQaJT~X~ zOgasWebH?A;yV1pS`aK)Nzj_}q}Y6Qd;Lede{<7YBTJ`wti@mdmmi=kp#OAh^uXbH zEREcO-MJlq%nvKU17|xa(A9K-uIfy{f=a}lo&L-%qXUP~t@r+7YDXT^5y(8%!v_+d305fzoD zY~iAP6}}c0XKa!SHO4)I7OFoN|}$0M?7Z?-msh z*zK4+^Rck7aP>Xnc-#X1APtP2ogDxhp8mvNF(M9)sYv?g`|o!ii_0qG|9b&Y5dFGo zSi2VIQ%dzyD4Zds=4u2<@O*jsfFMOm5}^S#dZI+>za;cQXo)(+HzTo)S=t=CY34to zq5elFPy1^vo;tdnA5L+DLCS`;jKZEbrkIR6M3JK#i@J2gbkjo<;1~%L?I#z;t*VRu7bH z;*0HHaaO&UpxzQv&dGY<6&qSIRJDA?(f%GTPr6Ae!u^?8tGOUJ?3Qk9On#6&!nCq6&MfA^ zZ=Ir8vJqe0ORlkdV(EBpX=|J+0Hb2!{rd5#TpbmE{-DOY)PsYAv$HeG(1oaxl0s4d zt%nzhMVIy<XCZ9e}{)qoW+$bIZa) zn!cMa>m5_bIh3(TB#%Ts)bPS$MYBen8G;%oL6ovw7SCnlxkv|X-%$j(rCAIn4I(=G zohshj8pJvkRm+5$SsQ3d!RX37EMAoQAjE3y=8LH24-5y?dGem0E!Qc{L6PDi@)J8i zf>$3f&+6#NX9?h*`G>(Pd*3S*?6p6CZ@{?2HP0O9yaAOAur{aw(M6eRa-z{I1YlwK zc6`{Y1Y#MNv%jiyI$UmcwxT$E|0Y?WgKAx4^B1d?_$>uXRMI-U?mcv)$0PigFqiy2 z0b7EMY_6J%#Cdx_h zMiTd654<|d4%1+s;aGe3}ZQ#}@CLxhN2!MGz0bmH= zYaSgPMKrjt=K@a(+iYEFNa~dFEi;IO#2?P{K8ff;ozg;K_g$}u%-@_h%;PU8W9J05 zM`dv%{`jUoYR5Qv{@2LBzx);xp9aVujMlNe2rh&4leb%0GHIz}P1UiC*6H$sunSdd-nUg5_ko?{IUH`W5BkBF}E} zp-5^ZK)3)d)V=^4IB8U0S8LdlY4U7R^nMZ87He*Q;3Ti8s$%EhI9Y5a+k%&3tI4A5 z51l10f=zKAXSL(1tE&(ksOP=frg`{`OeD`B@O^bQiu1Y z;=t&3DH-#)^Dh4BXddACzmlFJpm+Lu zM}OD5WYMKwfZRMbf0^q3bp39*>qfuJ)$ZR;ky5$_#^TQHekoD4#T>;iz~5d!Dek@T zqsJ=u2Ad$&BFAD8fF}WyZK7@6OYJIZaUVg7{ZOcI&YMqf(IX`@+NGw`p47cS3JfnE z)M$pnMX|)SQ1`Nf;ns)GfD6ygSY{ntIY4yUk7UlZR-I()ygNRq?#i7>0DkB7?R;16 zZVRMg`Dd`y2@qKNufXQNvo%iC)w6JnUsnPZ=aHKd~`JW zrG*e0&KQXaqUs>3k^(Dk%0nFk0zx$kB@c`wP!9z2aJQHgu%b+mgCY5ftm?N&WLQ~I zrA9yy3O5nVmJt^_pP=FZ=T?8Vn}{_iWJA({DORuCNGV%Dkhni$)Z*$~ zP(ZNxkHg1AC#{&>z~gb7=+k@0iT7Q*Lj=Y|AT(S$Iy$&4IMEm@6Bqj4Re0@nUt9+I z067yF%gM~lY=Pqymp;{tesU?2VW<-^x*FrTx=aFjFvOgRCyy|AoXwgXFD!b#nz>c4 zV0Ed<7rfYC0#BkMDzkm>iY3YHtWFG)Hj6<-uIZbRqsunUY5DMtz57b=b3E)P9ojNXk1sgj-)NS`*klgFSs89CSk!B^HA?dN%wmb(2v8bIv!Cr?hfn_#Jy|=IW z{-7!hMSgt2JR-&R5f#e&hHSuPsv)3oC@KVjox%MFss;j6#6q_D9ZAN=1kvJZxs`!> ztKV#70h+v)6yEBtoWJwM=560tEPnNff`gid08a-{7V3Vuz_oYgzf;B~YS!qolUH|o`&ztj?C{*kI1FB2XtOFnJT=2Q%GjtqP2V%N6dm zc=pvaEI!=Q`X0o0{$s8bU2bvSO=Q5&74>zqbX$8Zn}P@l)d1LZY9wXKn@q$R=itnyRdOR&q@-#^lDS4hXPw@>tKx=j zb8)2n))1jcW;06n{k;!BK%+;5icVI#N}A_TQRqc8j%AUL)EO8UD8~l^C|{LN<^(!+ z$*&YlkwyD%2=4&Kb+%Ul<$Z@bc&?epae@MT5HfWqK_OEC`yW_e%BEHrjQ9X zZ!PL_{-^j@yuG$|>f}mRrhN9(f1k|KQSQ~~WnFf6Ad?70%~U)8-2x-v-NWPJPb*SV z(uGeA*U9W^gVc4Ne>2%bd+ai9E6_Uq7*8GUI*d z$0o`=f5Y%>x1qVC?t4sOQ1Wh{ z!`0%6&+dvoSyGO+Ix$dZ0st`Ny=`xSi+<~eP3e(y1wrfm_jB{}vO!!s0CXSlVF0wb z@ZZn;mZ{#(wpP`RF+H}Sfr~OTS@_92$he34F_4K6M1H^ZR2~Z0#?pCf{X+JP!J)SC5utp_OJggsF9p)c9JydH$7O!iK@{#_-e`l7)19{Yww#GI@8dUZ z-lFIzN(Nd*SK{vc^((sTINJ%5^02tW9eO~|a#b6S%vQ=b?`o?1?VF?jaoCzg{+usZ z`1jsrib)iBP~9oNY$_Z!%I4${f!3NuCD*H5z%_3z`Ho1^f$e)lAGZBaCeIEIa8nxN z{e;`Zm?)KOvyOSr^X2jo2WCr+PE0!PrZ+uDPO?F+(qCsZx$QYiD~+rTVIn*G`LkI| zdq52#ZAl>Lx+lmDm)a~88`lhL@&g9C)>faHA;UM}tIj%W{AHp6M7Its@o1HV~ZC&60>K$kX z+`5vVbwIw;fJd+hpAL>p?F4py0G`V;$&(~<3O{U)5`5{3+dDARR7UL*b}^{0{U)a+ zWg8cnOt&V=ar^Kn^POgbYJ(vlsLYb-8T}gjB5hV6_DT=ryh#D{W}1u1qoutI3{t1S zr*_J3Rf^Y<^V`iS2fo{*budpRzy;2fp^MmWWgk5qATu&BG$c&~<~~4pFnjQm7_C$2 zl@yM9yZGMV@~!lP*{K3OwEw+%w@jB--u|3nZ4T6G0$eIDg7-iO}wd= zp6LuDY}YKp|6<#`JZu}9S)gc&T}0^Czv`kDRJdf6U&6{oX%>c5NSW47Mbr2l3;FZ@ zZ2-HmQ`c(`+X82+g$;cNUPW%df{b5Y)PKENR%Bp?tTkv?JM@wiAv$^J`9 z!b4&;_dO|Y_>gYr%Hp@qb~e!O!`wE!Z~3nGGo|&~?3k9S@Q6kfp2vx<$0PqsRexV+ zXEU!>-}67guDaWvoh_XJl+Mwh3kVb@{tr!O!4>8AcHyBzI-~^#q@|==7*a`T1PN&n zk?z)^8)*eZB?csh9$G+Bx(5USrMu%jzjv+w2VfQp<~h%~_r3SEGt+!rm%PsRtrW<~ zZTLbzQ#E$G&a?*2J2)$`7XqT)OPPSyQHKR^w)^E%daV5Vii7L3(jA;B$6<5!mD!&D z_IJP1E03TX>7|R|!^6YD!9h?KzS;Djm;el+0N(s$ZN^?c)z>y>i-9$Au<><$vrTV; z(t8p~`&30``qQWN=*7*~ zbgSkgKK{ouX9t)OgAG5pt zqs(%7hVA2GO~^|**_-vod$}~0v7o5s9?ZaiO+r{^)TgQj8}2g3?j*?gHd}?|OCR4} z(ARN{4!(gFe{#XN!8j@Fkytosy4GiFC~kbDLsG6Sv4IKk^ar;vU(50Ad{>d2cCjAg zhC!n)ATX`>SLft7isi8KkSk-rUVWyGh;$$zXP>f~*^(S6htOy7aYZZOr-bIHu;D?V zGn+22U0+KKu#8qy?h$jr={v#Q0Ru;f1q) zQ-)qUhtFWqDeAS{Tl-^AD`jrFH|SJ9+@wx}kvZ|sx~IOf#p7hBp4(ZtRBbT#DMHCIwZL8X{gBFoLgN)FUzT0scRh9?ryC=;XLntD*LiIx%s@g4>4~JHU!RY? z!dG8a@!`N+yiaz`3QthLQNSQiW)&g{)3?z`LX`5b!eJ9T-XBA5{q}+~Y^4FZ9Jt{C zbiqly1VP~W({q)Qm37VYKvz~&7#bk&DuQeTRrL4=UmmO%Cay4&CA*Wr zVC+A!F)W>(c?X0Io;{GZX-a645x|SU{`5uoM}XTA5d;l*kl^#z{ch7M18trB>ES84 zRCxPBz-v89q==iwXJs@L1`AFdV;V8U5L( z_tkFLyZ2oM9V!uPNO&w=uZxp1HC%mYy)?k|RF*UP!|k-0vvh5@AIv{e#pA(z zw!1LNM=wlE*e<SFAKa;Pp8u*plSZ@c8ri<(G+|BkkU?M;>I)eHO%I}@jQz~?wy69~BgxXg%-<=d-0 z0s45d(&PD{OY{}VPBZU7wMsM7meks#S0))Pp|?`YZKMT>0OWYN>(kbZM0$uKmhorq1=DOxtG^tAFT1WdC}Xtzw+#N>_h#{*>(Ny9Cpqk-CJJ3Lw|Fa2`X34!%+&FOk!tOjYSsil z_p?$te_fS|4`ST@lLzb)Z@%`Gv8MvJp`}e$HT}IY7bmea;t*We!xGLd-JjW|jI*oeYzSSvzT^ z7_hdXURnP%&6JU80>K%5H#BEr1>=Iz`#n%m#L@3vaH5i%a-g5SZ&bOsO~SU|vG-L> znjvp8ow?;_NHD-p_R)ZfHIAkjlh#b@iFa`kX6`|E0-DK92Bo?yILYAqjk zb)3-Xw4;0sJ_SdJBqq!*zO?ii1j&hSBw)VnRi9h)Y7y+zwq15s^_`oxy`~Kf-CA$N zjGMoIXMz5NWaCqIu58hZO4+MZ<5H8d(SDB-Ufds5MGqlgR-g5bys=Ref$C-0woA~G6lt(~#Zbs%Np%^B4rX8E zH~u%_&^m`#hB;Vy&tdpRXQ(I9{s#F~l!Y7cz6m>CFofl9?sz@zufbydd(wqu0DR7! z_zjEm4zQsB)YnDyC+5IsPqONSek6VS&Z0pdhM!Cq4bz217n~MXVUMyUBN;K`t>Ovc z9eBi+<|*o%guu)EUgm(~$Gs1l zu9gc>&GlHJ*i{)238l~%1wX1-_&*_a97zc@4`e>40MfpCRDSU<{noL8;=QN|_%YTxscA+=#+I-+PgvN|zw z@`-F++F2M}?B@sHt(70Ey@~SR0BQE#tLT4QErV{mQi&&q{Q4_{F_|fcmb*7j=CS2j z&Z~C!B2HI{9l9S3Xc2C$7aZiMpaVT~!#nu^w@a64uSL8HfH$^pIAYkxeMZXmBotdh zaY8`@XsM}dTssM+s|5qQ8vT=t6%BbBdU>7;{{ZPL)U!0Vwt0M))ZCWWy_Bty!fb*} z-6bYM4HFxm3?kHmu_xPdp=Cc8P&vtb8kG16)^B5`PVH7;QJ@3aZ9LmXjkqCB7&uNf z!PW_k!+R)}d+q1v=c(FqCHWKJn_$uyFwKQ{);+ALrB&A})p+K!hiHig2*anW+{!OZ^l-_@ z_sG32pZKYGlIc%qZVHQ|S0 zhg1Kun2Kw{ohTira9W^sYVT}SLN4gilj7^1{~=x!E?bK$DP$QH0($1^#p@r)cwBM@ zuWWR{|59)PxVM_ zVJIjkOPqmB`S0s%C^yzO;&6}CL+8rRC+h{^eIO*QV#bX@OIM`1!VB0Q9JKdV2&ADW(?Ht4gR zN3DV}lnkcSp6e^7f%R5R3p8`8uk@MOBOYQ>`=-MUOcY!o*PohENbiv=!Z^C6>F6;v zXU)&9Cb%0qkiXC30JU464>N5;G8wnKnh%8_3RC=fiF#6RrcLZ$XYfRgf98zL0a0XJ zKko`vJY{g+s;FM>H+*D3Ti}yC){eO{j}UrgH*){Sy%-y= zJzSk@-q@C>L0|1DFcLVCSyiT6Gvc%dbQ(UYP;J6gkFOwuJGi>KT3P-6{hs;uX=2#j z<6(F(x{!*3^Mo z7-@tRE&ScuJTNjEI!iN_D)_4`<(U4?QZ6qvp$!%1xARLgpQ$Oln$&pacTYnaX-@>U zLay9dH_kXA^4WKf`#)wfGK3s2%!<1$@Rcb_a;lYEPpCLj{%gOp!v-SgJ|ASobm@%At$T)$$R~23c;f2I z*Rn!<=yIrVeSN*#LIe5sIR_^va%yVsQ*qrCy{1V9&Y|{qEMeVOWlo-LvU>(C7>^}? zhw5Txm-MH=pHX3X2o}B;p*PKHPXh1_V32G&2F+>Dw6%FPTX*gev@n^FHW`?Q$sQ zds?4^(b8B2EY?)Y8YLo{U1wxJ+|TdC#l-k6S|r*UlGuL&^OB`Ft#76Nc};xgQqdA) zYgv*!Df|TN&@1uOR{+rc^$37e9RD30jMGz-vi8=c8X6j6eO^Cr-V(%FO1F{cvAa-| zm@j#z_Pf-|!gNo=o{~~?WH{z5oYrZ&GUUi?5wSA?tKjm|1y2~*wx->u84}uog(C;Qmw{?7~0Ymz{KoT^f>lb)Ho9Im;uTFQC9Wn;5CUNcnX9$_r0ttCSK zo!Ny*^ASgJ?bO5m^*0JE^smTDe$>BK303+0n;(H=r_I0XW zn3?RbQJH>#-;W}vRV}Dv`GcbA`Sdp>^c`F$Gt1e1taS3Z4OIZKMtPb+)pIIpLCkK` z=o79uhyzY!w2tF=y=_%%^+zCk_uktIuwBn2Pgi`1?lEOxIi{e)no{`&PlIcwI5^o6 zMzibP^n--D-TLo>_uBbEf2?Ahm#&9B)N3ANOZi_n;2l`-c~BJ~AC~A^cjfDa1Ox<7 zjnIr4wJ?(${bKz61_?hGllGdpU|M_sor?yDb2^{^=-udQY)vxl#|!G!Z=upeg&Kkv%r0dA5nIGBDLEK3(ex?oHFqy5zXdOFKXC6 zE#=F39Y49!hhI(ka@Lfp=&Yjp#2+#0Fe6i0p67ssjD}@OP;AtWk<(MPsg_&g+HK${ zD=4V_>&ui#z*bFo}*! z3=h2Z@;U*9W&yi_@;&U!K0#5f=6Yo>TRd&OoK;I|ACDemcC|o?B>#9teFfIy|N;)?WcRTt~N)TCtKsGiDhTH z+aD_-=i2gHXO-(~jQ2)2Vz1cAlUA@2(vt^W8q`;_qr= zcpo^K!4QktS2oQ6x*x09R7n6B9m1wK^Zfj34@csfKW%Ai_#HnR9g}Ha7z=|kc{0hK z1@U`Wnph6pnEJ!2moXxf-46732fx#50BrIK9HfsRPVBJ0VNoGuFd8HM=}ymW8jEV*}T^owne{0 zLQN6(?Jx;##W7UFI?=Pe8%BY)Bl4*?kJ2oxS~3u4`U%T2HJ0tMJ4D1>8&E5r0)J@ z7G~-1bH`{oV*K3s$8eN)px9vd5%5C|YgM8hym~lI^M-fNZx=^gVZ}viJnz|O-~4@{ z96BsTH8VTM{|;4Jif-~oH6sy_GZooEBGW6GkS#<#|BHt2)zyV@!608AC)Cx!qVF7* zbi|pO6#N}G<4jK=^5hHhG=q*Tl#KNo=lh7?+uJVsPcbs{uvlVjKGI+dOG-)#RaJ7u zSU&UujiArJGCy14(nuwDn#wLqNz;wN+}I&)y{?>X!iO6>xxaO=Yt!rTH!(+j@FVRX z%#&$E@1Tv1br9Lp{d4^hGlBc_Z8!7sHy0xqidm!tKWHOXycla9bxp>o85m&5zMm?A zPpcCf_sigYYOpx7y|^sC2M+A#F!J>Cjh_^W5qYMFb`zCS4IZ73GoZ%pp@x@UhGjD!Ol3o!Y66i@a*%wX)c zGZ$PMkWYMwsZqC^DL2`x?Ha#-K*#Q{_DoMi#>8>Uy7`FHyu*t9w$gy!6`{|oHFT?! z+A-t}6zSvPV3aU=6#*SE*Co4pJ7d=1uH?rYD|7VcLObMowE^{SdUr8!wfe~z2lvd& z<^VVD8WU`sWP`ut5)H&VDsp~%bP8eC*vc%zDb59$| zp0|vw(CD+&YQAZ4aRd~00KqY0uoVLZy2QmVsY$}=;gJQ&pR30DF!QNDaaapzq{eVn z6cvW|0r)2Kd^14Y)aF07P}xc&z~crHNatbfj*Y@Z(ShgB;A?k)*wrzA9X{ zaD1E?nLVEX0~3m*@6%yJk#X$J$o7gZwg5u2^ehyX6;7lz^`@El(py^`*hwwgMJ%G- zh;5eVV_Q%etsRxJsy5@aqYNM45q!#8#PzJ+rr0`u#U+c_+=QMoUw|k)&S4g#AiC&R zG`?*|&z!%(ANF!`f++m%xtOdOHYdy82eZ=3MH~ZvFJ(D7N)HD=*kTLHqO~9mJj9`f zra!-R*~S&j5c$-J2S{Ii;Se@c3Dr$WtE0k;=Taou)G48 zj=_N5L|fXe&xvxk-ONF&X1b;xe2P6VQJwbf7MjRqgTJ~8IwFOJ5Hz&en0uo%P)DLp z*M)=`eYdZqEqifp1KJ$UmF$_x+h1Pnh1~3l8_p<0NpRAH*M6Bd1+En_2j>cX4@JL6 z?rB4A7wALHc`i#<-)rZ|To2rxgk%}*ub)U)ws`+;+<4jG`|l*`;)m7xmwOV?JzP!)#T#_}-c&94#cA~iD7pcd3tPJ1* zU6C)TlxwE^v0=WN0Y;x3Te?ERg=W41m9K3ckT)xTei~W$Jsc3W83b1=Hf@>Y6K_QZ z;cKG20NZDlfvrYIz9VD7m5s1+uZ9(?i*u><&hTO_&X}`li&zUdqp%y6rlS!kO z@r8W`1~s#TN7rCeNc5>?{2%b$do8sFF<<_A-^0P#aWy#!7At!TjciZ=`2aX#K;XOt z86c10%w(Js&=mok6RO`7Q{~jhU)RsSu2&Kra}cq_KJ~=M#0n)_rtYCZnrgyQL1!Ep)BgBpes|uT2#tF2LheW&14z?OW%52Ebs`pqgwnt?CrnK@2KjE z&=P@qIg<=E_7$tNKl>zxgMZJUgV)H)AlINE*@RU*=D_{^-w{vln`Ep7;I!d|MS8Ss z5xzGtcqAa;TInjWQCHvG1!cDTp(=k%shYrKWO@_Iv~lyzH21MC<{&RGFYr7Dyeyl% ztUFuJapSM#GjRsmWV)U^<674?(#S&g<`*5L0T2R!1uNsjhpzDdZrH#fLRQ+l53ioe z<~lqT_ya|Xzi$l5;zpR|Y1Paw%*^2ba|2#EIsa`5Uvjby+Rz&{N=4uqvO1?s+5)I5 zpb?Qi$nr2y=TL;wiAs~pmU8(Y#f!JzjSV2V_`NUn8xIbul<-KK#$NAueh}MLry63C zoIBgSGOF-&HK8}C?o!*hLEl{`0<9m=BSXs=0~D>uvFoNNV)XuWy}}h5sIKP2=`j78 zHfHK!fME#?S?p85*Cz1jQB-iC;4D#|;-0yJ%wF~*d0L{^i%mZUhwL8refh5lRm9ZB z*5Jfn79q-o(>&{1L;y)Xv-th-8D+X|^|?dK{W`toQ6ie7>m#rMV*#vIl_GMN+jKo$ zDih}*Aa(Ti_Ja1;d^6{r|0-5CCrbQLa&zhKFV<`&ygNnW(m>Iaqh2h-15UhK4ED_A|J6Fu6H*}=bhS0 z7N2~?1Jq=pEfL~u0ohHmQ-7P3jo90a_-{%vDJ<;Qe zT%L*EkcgpoOo3IYROb`uDCByy9>Vq9LKz0_2RIxN!r`TAL_I62$NUOAcN*2Y1Stjp@e5YB7gAbxprR2_JOKau7qh~ zJ3(ZlD3;7o!Pnb!=Ot__NO2lwBFuBGKWB51DHp2DJ|;ato_t^f2$OF!rV*o$~@y;EEkCUb}%D>AWMzzx0 zz9%?za3{lOi+}`dnad4YQ$}y_epqVoJUIDy{S)+w92G1N_2yJ1I>Y(tcMAVoX6@>_6Gdb3t+YRb{}^>B!+hGT z!Hr!qJ*I<+0-ooAGG3tR{4No)lVAkMx8qgjyYm~?UXGYrxX-RR*Q@i><~C{Gy&ZHN zcHKX7qEor%Z7!eZa;ASV+98rzThk{{5>Wz$smE3bwUnV|b96^W0{~2;Cr} zP^Dt_3b(IjTRi0G<1Omto!85C1+JBJJ=5oMv>fW;gpqV%EoYy(nMs0db$Q96i~0hz zBQ+d1a)pFgyqg#E^7249572Y{YoC1EktM>75YY_z9=aflCwDoT=!9U1f2XK1?g@?> zD?MjiH&ukF^j7Y3wE*iJLEE>@nm1&#M;43-va|b5%VA?;K(7`Ro!mQ7x&IK~B;yD2 z7_g@~weuO7nMnfyFc#koVaV8vvdCa3fWCI!5t(x}qv8=Zu%H0UL={SzS_3a&3Z-;> zIcr>o{=TP6rO235O8b4<{gq&5Fi*s*7W+LOcR{`Y>9cY!TNEYC#@fh`3wxWQuue!f zT@+dBobsFO-33EsOJ{mIE#bSU*FHmYgMSqr@3oWh4d`MMgheVuc0S|Pkui=m$^02B z#^G!0git4UAe6#mlbEEF_xt;+q_OdU-PQjAADZdo-@uiFUS_bxe|f#TXMt*dVbnzR zqM=63y>NU64zr+k(Yv6^Z(0<8C$Z7lNsxu1x zl!iaYzbjQT__AOu0BW8=^bR23;g;pZ1QZmHed_DgLnR}5l!W*WpYRVqr#*@MjjN9D zz(C;DsbRTS+Ha77Il9+| z!pD1$^+%|JX<*ixNxJ=sNHiP0i<^;&%C=fmIVUS+*hc@XhObNc=&om)-ta{!pO0Am zi~%9Luqi>Thad$<3FuDYnqnaooT-x9K%Jnk)XMBk-$Tn{3aOQM8on?xVCd2F)jWuw z;N2KAEPCUOYI}@!w4z@`A?0RfgxzaHoL+Xw84!}2gg%k9Qz3&`k+BLmWXbyKk}JE{ z^IWArMPgX7eBV~4t1P5A>G}Q_>yO2*SHSp=7HX8<_1OkC0XaB2ntKzYm@6r{(DMF_ zlMrldh{ZBiqP)rq)ur%AA=gwkzDTtXnm`&>?y}w=PNp;db5)f&;Lm7c;NKF`p#72v zJkoC5TFi{m8va>L&1wj<)SYiRi_n}u#1gDX05tFCBay+Y@{F^4p>5yfuq@dTj5leP z(-8^~T})7Pc+l6y8N3EOr=6Y7fKZ2`vG51Iz93Ut_ttGu(tafp{>=0!fjm9hniU5! z{Mc+DyytV>Vdrib9&>)?U;L$!vx_71?-cFjgZfTD^DAV30&7n;Z4Y2pPL6@xlQ)wY))?PnzW{tL}=EX}?E`MwxnAj9Kg3%50K>b9()ccJU;=>dJ*|Nf&D{FfsJ zN#bFOQ7$ivkY6(PmFWx+@y9gEJ6n zljJp3k`X4UKw7mb>kHPZpXf{Soy3pslYU8M`>4bjVSly<#9x)jrcno?_Yvvo)cl0Xe@r^xo(xO&&Sg$crh|k} zUH<2l7CS+;@zv)hZVh#fRZYl$)NgA}Z*r!0PkqXx-);!S!~~xE+`Vr*Dr>u3@-wRT zRkW?OwsTh9&8-7gn!m;{e2^M}#9EVe*x~;=N%*_tIbv7icX|8|n151)*v|9-Ka>KK zfA=NnS>?Bzt24Y`pOXG-&fZEu>BV4O+OM-!`^yNF5p|r~H46G2Y zb*3M0kH5b3Klp(>IgvH@XM#3UG6?;e0dr5u{n5cELH&ZW)Cemk~>03iAB*sL6s#^ zvBiF9(Gp7gw*6t)nU)MCT*7f;OUK}at)79p%la34{qhg|Esb@xBKJ8V5S}J?pJF_j z?gj-<;kO&?RWCpk4P9s_py_th>6ZQF0P+rV-z| zI5y@qaXf``YMH%k6u60Bx;gydwqRb&wYgzZo?bHjOOm%d%M5AvNJ~wIZpgy8`<`>r zDy)pFZt%qLXmhj2bUGbEDtl}E<8Xx+Bwe#&&1!nJwU}iF9b{}$*cV+InvnTMYugi^ zv~KUrm-fz(Q|Nn;bXz*Yt3}BDo_2ToAPWI#`-3Q1={E^^s+KrUtYF)LCe-)pUx)jA zn(SyS8nTeM%zorjQrK`9N5~X_`!lux(~zrOZsgsI^p2k| z;bh4=A6hZ>rDCLPC^@1_Wt5T;2n2M5TCXttJT4gp!BV4AMf!&)plqR$s5fsnsPrCH zVASwxJbYv6l${$}`(%rl2lv3+bGi4#-`OS5&+jKjEytM^m2@G6r2{WsAKyDFHlZ5M zS0q$cROD8#Ah<&s802C(U4fYe4hnjNRHoV_-=S-(u=;uLfUmFWNB8!|n?{}JZPc8% zI*O)ED=RDC>z*bu{9BQh8SvSF;6GEq{oRq;OZrT^VuvU_#^twQ%rEL~mt@;*bMUC` zpD*C$2d?})N(|Y*zQDS&&la_1`UDqZgJMhT;OewrQ0S(`FpmGjW2W7Uqt?p&5m2cE z|2uq*n4ApYB++b3v|JK^+$y#!a#KI^b}`6upsMRdGeBVvAykA|;l^F6AEnL;jy8gK zjPAhPf45RBo*x3*E!xgH(|O&zo97jHO6s3|W{f~SNRAWYT5d^P_539ucb#ls9%0-j z-c0gadwCgM$v8v&)A|4d-+wRdgP^yMU+eepzqWQJwj2$pO~gP;8zrR;B#9VzFn7Zb zo(CSYFhR>WfAGQ8-y zIXWWTu)|jf)cIx^%3^N{QD5BwjuVmW6M!qu%E~%8AmJe-BD8r{_Bfwi9fjUUOZRHv z(0`wBLjGb=MR0O($Q?v$|JQ;CY)JvL@xzi3bm|+F5_ViR937tp=sj%O&fL)C2WLG@J3%(#oYBZSG@XLiQ(wRq1u16fD@Zx=-6deB?KC=d=vNtDDIVEsTC{*C&3_NS0>FF3Qa zP>qn`t3y{LUo9*!dvYyj&6=3qHxZ&$ki=HLva|DKOrDC?dm)KwYVv}@EzI(?Jr0j_ z&X-Jq3bqlnAE6f>IW|9QRf5e|;EpC&R(q9KlaT6A>@&@W<8uqfU+ASP;x#EadmEuS(@G zl3D>{CH=LQR=Ur9S*vwMW%snt-v+rnC?er?b#;d_A!f!WHh*rHNfVvuLdhC$MQ%z@w`virgbSD^fs{-3JJ|u4y7)EDeddW z)K(c3P|=3_0}F)2#UXEHsyf~11tA24MS+>`j4UbP+ z?_C~*4}CAr+dOlZ4qHi3boBcCz5Mxe=DSZcGYbz|uKT0*PK}5U3Tq9t?d|&4;yt{>!EH+>#^`V=w3p zdGMcP)wvxpeFLzEo!jSITBX}tYP$mk#pB~wD$k?Luaxi5&}G!E5aiR;*)IC#KLQmJ zNzJKSrWp0qJnhOlf`QAP6g2BF@>MG2yF&mTU5#iU;kYz`*3v=jF_^t zQ^tl5Hv&T-+Py~d&Huartw8}nK`5@$LM}|)xrK$m-NrpQOHB?Vv-Dk9Zz7}Q*gsEC z3XGaFw(bZiOvv7gHzZ7w0vG`!e)&+oF&8_v@4icvy96U(I*7y+Nytk0_#T|@?8FcC z&(Lz1Jx|Ki58j0f{A$Xj_RT|Stn`#SiTU+wOBO?qpGHND& z6eOgj18%|VTs1Kq*;@Tg4VH@xSW%pyZ@D8kl;4}R3r@rkhh`{~f7{s3J@bD3x?<9a zNj`XCUQd~vJd2B`OvV!#rgHfDAQ+TwjXE@x_8-N?@yE!F92tIPvi^NosH2f=SXbT( zT2i>!af~z4@5@%XQKVVSF8s_LA6oy_oQ@`8*r7J8C@tLv(7g}0w@Y^cof-FxGE&&1 zCBCM)4?8jmJuW<)60Y$T?D>8MwxSa|MPbp3cE@OLW%%b>T$p>haE}2Fv=Ca{Cy9sY z&UgpmCH0BuQVR9t8Ylv8gZcgx!=7)|Z>_Qj9+Sg#S5S*{bLuI&gNkpgNEhTUQaQv5 zg7L*W4X3z>d%olI5O$Kf9_PE#Y}5a^udG`(DQyFc-b{WV0uvuizIM1a@KyU`{+ztC z52a+99$Y^|66jrs`^p%De(U4xJV(Kj+fF+P%z2W5Z?lcA`oAuZ#N3dTIipt7LYm_U8GBMfK}@a}RkE*K2Q;?22ignl zrih@9(pnyCyXY6bJ45M2%h%&0+d26+XlI&=r3PO71K8H@$D{-`(1^~hva)+e^I@4Hy>36i3V0*$wI#gn5~M^Vla*ra!6eznuM4 zN#-lQo&t|7;lj&k90xxOI*Rhn+Jl{Kn8H^3;Pu1J#*|QlDS|6gR0jQ{;RqY|2kNZJ zdZwuq$|vjwon01gGV#66UY;a*O8N!8teD}JVNX&^z8(Puvw6{<@i}U=#v3Wm2Wgl* zjkjAeb%v5xZRgQ!<(;65?C+1X)+Qv&=y3!}Gq|ir5bSYUuQ55X=XF!-KG8@!jK55n z(febOK}~3Yxmg!74dVJ{3PDzQG4+(9?3! zoiN@#931t;xr}XDsNQ!=@+UCOZlX?WDth94Wh|`;XZfR&ukv>#Ut>3!7l1pZzV&9& zE#$0m;6p`uIUgIrbjk#m#@~+A_p`wKH~M$y5&M~6O&b>N?|HHMC*JE!-&HZ9urbNz zT!`SWJlTmNdC1wtBwo<>)M2t zP#QAworeOvEZB;;do!jlS$T@z9PEbEOfz^!f0})bFYL5aMnO$<6edVh_Z_{(rP$40 z^26N;A2#a^D>E!Fr?pAaNtFvc?gQxj3X5PH#}fOvXq#~d z@wpv4#1s&&|FlLQprZbiLh61=PU-%6+N}EAP>N#X*WXVST4Pd=0|-><^g_Mh1_mnX z*0H%%RWxZyS;B>Sk!S9#zPz=*OsS(&Cae=G0ah$&y3SLpuX$<6YgzZen}>+(M+t;* zvw@CD#@qAlUHMegpAug_~s}!j{laBLh4d zD~W-i5v<~6TXStW+jti3QoY;K;NY{GS*ooTd#Li~77zSB3kWvOj3GoJpl(!t0@it! z?LA6LFFii*@(>$xK!UAq^>utRPBiKf=9_fNaKu|oh2mTfHtYhTaHH_?@o@%cXAN!$ z0o%!}5?*dYY3(ObN-6tF^TxMpol&$UgYR$)GB_NY8+Gjtj@eJ^>tbDuCG?ZIgp-H; zBR<|bf4t&syI}B>)1hA#v9n{**EPM5a}QG~nHm^!oNXTK&pBqtsD;d&4XUR=N{7!g z;b(PFo0boGdHEi@=*uRL*Z$t8AmjwK&V#FEPaVnBTV$HFXpf6L+s9nT4J|Ci%n1QI zUNT%M#MD75=aCGl)gViXJsot{<&3}eb`G@`pz+&Y?kLNJ$2tOkTzJv>@+r6dapXxE9hU5lpFC3!Q_;||^>j^`kZOe*gVItSV z@dfW8G?U!T)fFNbpb@`W+mpiOo#nIk>5YZ6rP;axGi2T?TSoFI%%eB>)PuRIZUH^p z1PU_m2?XDnE%~|IBH9eAlvbZIEAd4x_qW|feUv-er!#K$IhbEkzo#m?rsL)xP*gvP zMW<1s|2a&77Z*bSO%N(bn2M|434@u^RTbmvw*SfHz&28e5fpGn`u{)+i_jAb$Z#E& z^33>sCLd#sM1<40381`vcFuoNlDfE(&T0-mv$dV1XLk1Nk+z{6Prb6^;QS)BDq1{i z_|7Eka}O*V*5W};hit7noH`s3FzvQDwdnV`^wJG7sFgG5D9Lr#8sz&93n}c}(GHk<@Msi5xw}GRrQwxZ6c%ww zbumUjGy+nZ+_R0{vUOV5yjAw;yT`IZfOU*=;}~nQ^}ezw zBNdBFoT7U-TAG2Ly$@cVMi#(>7&+u|6(?oR;*G(a>D53WDv9vSR4|0fe#N}ahe3;x zdP5SLUf59vpEX~2Fw$F4J3cd*P=ii0*IGXw-=^It<`H$ocwm@?Uwu}X)-6?9oU3v# zXA4K6W*l^;uU}s3=_-GY89t}r8W=Vv!?=h4jaAc=B1b}z5-Gh(#gO-zitg8CImeS? zojJ#$W({ZSj-l6;A4sqK9C1-oqm4Uxd0|2fgT|FKEPh$Kxl%?2?LBjsr|VPOgM5(4 zZ{4VbKM%-5e40n^+}by9({^RaX?8Uo(hE!9%HN5%9Up}pwK;juC9`g@jIqsr_#(U8 zPC7vvX4}NegYPD2ZS71>g^l5R80|r*5k=S{szI$x;9zlk>&zF*a;7_piTU}88QPqp zK?(`oly?ify2V}=aLrUUHZDV!1Uhu%qT3D+#l%>Z1Nu2f_@Jh$_~leMkmB$sk(h^} z_$A@*wV5P+*83`N>f0J>7f_&xS-kZExd+(H0FWf@?YaAFTfe+Zh8lmb=z5uyWD>1A z9OshR^(r+~2A|;Ze&XhL%$4ZJ_Ln!o_4BeIED4N);bckh$XVEE1gV@aSo805Djc&N zw}xUC?v`QDLJCD5RX<7TF)%44EBu%>dpBj~w&qtMYLH%ri)Hi{F`3_1^Ec8)PuXP0 z#V3lD=q4Z{%m(i4sA~{~c&1lV=f67S%&O`SvfiP zU~tnKF*&&kq}EvXeH_RtDHCPgw=})F(q}1={M=5iWjyK>IXy-g?P<}5PS z+~|ZotkptY_fZ;>`zD$?7H68Ix^KhKYs{>e^~pKvo~nOo{tjrePhE3HOPoh z0u<>$w=QRP3|5`EXP9vc;c-bDl61s{8hcJBJ-{y@9k44TZ0b0)k~!dXZ`v&m?HW!SJ}lrgztAY4BRLcZ1hlp7k2f`aFf|H|wLUI;Cg>0KMTlHKLS+=B!NlI17YBrG6ozUgb>zxjC48o73@#` ztMTINH20h4Q4$FefONije6`rYl9QW)P!0+c7xu5g5> z8)jnnxHB3nxm$wKvpcXoHJ99FX~-H&Th5n9cqZ=)uj*;pBo z)Z~FbbW8ZdM6LRA*;5?h-ws?hF3OPNwC!QHKGp%>js2z-1{lwkP_FvD5 zp`Mbi^@`cRJz4UyB+;mnWP1vTBEYwB!3(IEO{}EK=xTl68eR~Vk3+CC*`ps3V$1lf zACHd&x&-_(Gc`kY*01j^v;;kcm?8|nj%VfO$^^dI?LH{_sx9xiyxdWe^{-a9vfh+W zL7j;z>}XjQKjMTe?YIJy=x;)Y2?T-&`DtKb_1op&!rc1Q-ErdG2j}|T!ODs}nWOJw zQb*o`Tt=@KO&Z*ZH76YE^xSh##{G%2jKrp_6>afhb#-E~%kLbYrO@Wk%t;rCQY1Zk zk-um@2W(Ot8gGsKFenT)s=QcUWaPtj92IB{8>6AUjMY}y{X7EqX*MtlkRf%Va(15E zEqKs)eW@J#;zuqu2Gbg~(J|#OiSRTERBU9)oLCK|_-o`?nB)&2;no{$#dwQ|Cq8&l z@lR^`hTrc(zQZ)8p_GnA6748mkS8B?h$5%^VEboryBqd6rht!ZlmH8#`z=d&AGVa{ zSXI?db>`BnH{@#q6I0KD8S06+7MzRWBfPgK8`%R~1jon69gSV_(dvTqY46zIiI8A@ zTb?A2QSlOeoD_QYiHZy(fCa}i!Y4#r^PSlpbHEe42s9a= z44Vyx4}CaWt+`S4O14aw0)q{7dS&uC$6Q||!4~BQkQKxhHNJd-4 z8cU2u918{3TU`3Qva(H-&)!Yz&1x%;h*~J2#oS!-<-W)-mL}a3bn{v8(%uy?_U-E7 z|Gtdpu6a9o^!}xU$M2PsDCM#@pwi0dWsnyj>R@Ka?OD_ieu&3JA2sEKOg9 zBoVT=!~5Ni7rESYK6VHyN+QJa+x_>&o)sb?=oTxNqjy+t(w>k5`;m`rWY+2Sx!L3M!doX^yqjX4(l7-~ z9R0NJA1x7T;`-E4`|V1k7&Ut*?@FJi+OD7k2J|mEmv>_OXpWVw5C-I+c~234i&MPZ zq1m!c*m~YyU!Tnm{%8K0mzkOi zhOHCr4iZEI8IQ!pW4=|Din*cVdLYG}l2bl44-jY$c*k6r_C2~uVJc-k9f-9-+D};J z7vT-bZ1(a2E?rz*D(NW_G)VSd8vNH*|2SCw%}qmcQ^it4KlD&X%CB>Rgf#K z^)*hkgoX$Qmcky2P?!O7h&FTne9KA{@yA>b4uxcf)1@js=HbDdC(249(+|h2VzpM@ zmn+o>|KvdSe>9zSSd;JHhBtB`$UwjW#uzD}G)j+@lpHNx(u#CV%7L_W3sR#5q&uaN zE&-*xJKyK~9>A|Op<{yhXjPY^AX^lf49rQY+zbU>cD3CxH|-^W`3wabfHK&ctj z`DP`6&9(lfOKxj(jFe9#-eT>AL4yGQc=w@fA(dozcUZBGMc6%;{b#Wj%6}rM-qw8l z2fPR{R@65zc=Y)3+iKtPIR{*%8s#Xjvjvr`tgQ5VUz3CLkc3Icsi}>V46j=!8j)w= zKY!_bXAR9N3hn*+9x02=!fMY!{$5%-(ns%-$~Sox z+K1x@9spVquhpb%fJ3Datm*1Wxa((qHW6M|v!B%Lqh84N)b{nF`rqxGzBqrVOeZTG zg7BBF+!M{pr4N$*&9?SPqR3MNrHL{N_xASgboa6Y;K$(o?y_vK@zLAa)+t|%@afLN z-QNJ)i8qjzj=IVRTN6SFU|xu%5UFVqVRIMM21^+y50=wOfoKvOv4jK{rkpvUH74!ad+>Kaxth8W1q2DzCcCoQcUTe^K-xk+M^pcGd}5M^wI0aaHuvFsfH)-t(%$KL1$rG z2#cy&Kf9FiyIEBRSb*CP-y&G!J)L<+QNvc6P~#Q|LTrGvV^w$cQRpRBG9+1FRT)bV zo2Y9>Rhada&Ww^tT9z6=(ne_&fZK&v5>L?@wPrK?GW5t%9MgzKu?rP?%rU&CWSiJVpeb{{0@@s!Vyu>eM zP1*SG+cX^n8kUW-1Rx6!Pu+Y1puCIg*0!@%_GDsC3jpy0u(LV>NezbQ2sA4aFP1Iqakf(W|S+^i3%7?G6WhW;uk zefESpL~rOyTE0iPc-+S&jQqCENy9OJ@VB|(*LRBtAQLlm=K6CBU1l5$wX|0Uhn-&@ z=B-)2jkjNDIs*EjC8H|QU$7tS0um`nS+c<5EIfqTYey%TFH z$)9-)KGopN*@f@lpepadoFF%nMv!Ymp6{1pHU3$gEFje zWSj~QS0e`j9!4Pk_N#tw7x<$E9OiHmO_869<6<9#F(Nux=N~Nbs)*n8_Hl{=#dN?T z{4hGd^zo~SmpH?K=RpRLbLkSVb9epxH7n&fQ1`rJdH5S!fc_A3be`k%8O082;wT4!`({zynk=5tf{5> zMaVE?Pn>BBqw=C9wYjBv1()beg5SY#=LLSkG}Nq_ZQpXWo!dfFLd4^=jFbX@!uG21b(C+}wz9*_aVwec4~{;q>@t(~Iv{6M zMJs4QkeHKist^|E1SB&C+pd99Qhi#^@bECe%*1q0orjil95o2mbL}J`kr*lNrO{+!YakiSME*!h=zG7Di*k?n5G}U`K;=x8!x5*V`80^92}}JlEq5S zQrWU{@1gin|EQziY<5bueKZv4eb8T&c;D{d(S;4}X@2`r(P+r|j?6TyJw%#^0{UA> zU9`{l;Gy5a!fn0ZuZfS;LJR{2J|HsKuwBZv|4R4xE8tFho08^p&=E4x z8@F)L;U;<+0aX7gM=NE2jDt)=sG`1^crX$pG9d!*|7eb61I@HTR!j^lcFf~MGvjFs zHBwSHS>%X&O7;m;D58wLaHNjI-UOlw=0bviYEveOr-!Shjq7eF!>@?+S7kqHG(%kL zE!5%%`D6Sv+bw9lSqlMdwV{xkP(Ux1b`eI^^HaN2uii!RXI0E!Gttko0%B~muJOfL znmKBWfrSq_ffBC8p#2|_jq;+i9+9E{kN{6)<-_SEWOsj4m8nnnH3;rrNYh#gJTyi!C({f0@?gAQS&m%=;&Fr1R zX$M~iN`G+96=UD*mkk>GfvTKPMoCbHpdWJ~#|h2gD+Q#luaw|8*p?!Mnym&YQYmrl zHz^KzcJHCx>g4w9IkR?yqcQnua#$NU_q2<&g>Es^{b;Bm|7_mEK`v9LX&lZv0c)1@ zxgYc5o?crrFnT`i!#=s~#X~xXvD6vB(cEnZ35K$hcHv=y0%EZ&Z_>pt4+|D9=fpow z6zNvjoDJ@fi5~y{^!e$ZdbgpDjzoajO5UHi^!I|1r?L(dL@`c{Kr$lnj58sW*hIky zwZssRlBLnzj97Cu2%0U|kyu_qzW3*E&UlTtvYxHf;SSCE(FlbMg7n`#nOjZ9;HXER zfxTS1$K|x`WUk!=%)V6Qcs={;*RN9SFy?;RTG{vJW{?3bASOwJF6xuP>-q7XgaB>R z{=i(>+Y=u0DG4Nj7dC*zR~wm?pUpvjBzf(S#q}=$_9wN&35eD4+iHb}g@H!W1SYUpn>E%fy2(<&Bx^riZsBC~gBl0qAH$}} zjo@Kv_b5M!R7GYjo7{7mK;z)hw?5C}{{2rX2NI?9*5+vTpM-xH1`mVNYrvp`gF}o7 z?0^J9&8WAVbIHN6it*a zp7`}Yamy`lsF9ZJaAh(Od9M-R5BlEn`_W_F?X!k1(X&5C-!ksB^PLtuLOA*y3^IfO zle`a^7#=qgvYZ;+-StTLa^ydld;ejUkwc^HEYQY}d@5doZ6cm?(1wO_r@XYEtK4#! zwdS#6V9>?T^OtS>ec2)AZpM*o5&At-EpU2yAihjMw{7i(2Ki%6BD=6YI{vBXOG9$T zFhm5z_T|U&`>uZ)t$xjUd83GsnyfxQ?C>g|qe#(l8LR;WlP(&L}*zE#^#OTj^_AlM9CMvhIUdj{# zi*x?F5}k^b^1|}`vW!6B*aLx$w>Bu|6@EU<{fcJXcw9ZG@=?(uri6l08WkZul-;x z83^-u4o+qZ!DXO>>B=B!A=&na?tXYUNq zvG|Z!Ymf5A%v0-?{n`nyk`=PxI2$i$~oQ}LLs1?Y)uNW4KQ^3V_We}@p5H+UeAj31$4q&x^v zHbm}27(Nt~f@?M-YpbT=Uza4kwGgF_2SuuKJu^o}L-<`Va`Xhw_t57|U}v&V0y?Ws zK6!PLdl1$?yJX-;^xR2!t5~Rd|-Pv*%T1@r@d>}}SSRgu|K2SyELK9*dHVgdf8!|B% zDysJQ36eJf{?KFpt+8Wi$4ABUBWa8ZJioZf^*u5zQs=I|&)U0Y;AFZ^Fs4FFQd!L&@BpLcY0 z{Ko_T7H^Tn*$0&bSO^>(aTY*3SdfRupV;b6`gOlmIyJdf#l?k(B|F0WysCQEQWr%j z{qx6vU%wry&$g#ECQGY#vAF1Yy|1JonWB2!OqjXxQZeMb&R2@!z)F`A1O{a_SZ>9# zB5X)-5gI$AaPFA0YB8c7zgaX1DdUp(n2>fuoW#qH9?jy)Vy%1Rs81mzBfuzUId`Co zi`IAdqWyK`qcb&0O4A7P(lLj$^f#4#@qr*mXV%RNm8hVI&$eSc~DjBEH^9h`P! zc&qZU>$q?nUFfrVpULjVGk^|3AIQ|qCnk2go*hY{rha@o{P}LmykvBvC@JxL)$u02 zLD1jaha{LZCd8i}&+;Cd#8@K7fB@txx$@$p82QuO#8;)UBE*`38rFOh^9F2aX*tSH z-m)`p<+ZPGbpQhVTEm$b0is0Gi8)T)aq;&nm-B$)8egmi!M@Y|ObV0>kaK6BVSizi zVZ;AAK`0Gq35EB=3b{`MmM5s2kUuN#b$)rRLdaRan`}^Fsmy*)&A)G^N>I$l?BIcl zZzxSsHc5r!Rjy-sS6fcuFY%-88v7OV;i)9w_YRhIc&y}sq%hpxEG%2kX;ZKpMXJ04 zK%nG8Q@nAbUX8Ci+pWDy+q>M{Is1cKOb}Mpnp`&_$3*)n6hq8C8wP^=^O#~nF-k9& z-e_1F^343iyn=0n_{*A@d6WEQm&tz@+U2PRmwiJ|hM?zCBS}wsejm*F7w;{;JrAuE zc?)=%TAyxWd%kA%pjuQ@bN{d}F9Wc!tO0eXnYg}tM-`JVQiB|ZV8Phg^4xa@&Dzv) zVZyvVs~;WTy*It8DiR$;w)C(Jpz{MENVS$5H{t6D=0PfYG@Wu zhwf^kS~lTCc{3%pjk~kl)QVg;yq5bVi%=k+jX-J>@paf#RaP6 zhay6uW|l=}4D^>-m~S6C;N;O}$6N9lE%}_yJMaJ1KV7JIY@cyqP$rQ`GieK4 zR5ks9haZrcMI6O8^_QI|7_xA_@hD2n^zlnv95oRCH22aPcV?tT&!7Y#q7UdWZf(tt zDH0jk`%1WwR#Nc?Yyu^>orduOO&=k#+|YWrouofM1!ZLx2h}-;(kccOjU~;UEMJ}d zh5;UFyljOT2r702sYwYgY(Grj9w$?3W+i^0vsnYneup-4%b9E9g`hyurjQPF zhZ3At1}`CQxa$K%LIU$uB3JhJH~LF^TDGeB*K4VvVG$9ba*!|D$6(~<_p=cSXg6@YbiTF$O;*3e{OD@St<;0oJ}V^60N^GP^p z`AJ17)>sgTEZ!t+7c>MCLKr4583MsWv#D*$5=jRWz3{9sLUyKjo=wi1n93G?TL}!z zogO|UDY(2gHB0o-ZG(R=J1vpC@S1wLJm?gQ&F#>VMo4)Sf-^lPKxo*>;Y#7zANJHF z*fH7Nemel9DejVkeA}c->RC;wBM%9QE}#In*Sl?B_GDaa0C`tRkn7&O&%yOY7Ar;x zf@24F$M2VY&4_2Fq_AVsqE#4Y6%L4rlz?Sf+t=h9uMp2E%IM_9+TmEz0~$3rAG)PP zEnciIH6Nr3k>JmLa*sRbl)&r{d`vEpJMJVawERy2gUh`hlXl|#vLv$fq_2;dlb zrbD$3*eK~djZ_xuc+#>i;qJ1NMf`U0m)Pmpx6h}KJh$`(7An(}u9lO`N}E39EZ{o8 zd7EycrG99pd;Ck}I8C0Gb4XE?v?^7Z%MYa}$b%+P3ZgD0q~3ays!9PW2H)v>GU6;1 zfOygGT6EzoZO><+JM=vgEkY=T-j?anF)d;n;E)XK?#9q-hDHU-lFP|pXkwuf^av*e zD-Tjhm>(mn%s|fcywKd)z)jVTls+W%ET^)FR)W!u8q_=T1t$fMGoXVNr|SbEPxvBxJ zi_Lq9q=Z$g(u~fD&5+ZMK>l2cXc*5TpY_h!)ntjmyNHM)o5-*Ha}F#+&IdA(ZAJLwHb2%6*3OSC9*>QUEP8i!=i{`6 z1w*)aG}?uJ^=EQRV`A!yOwuIq)F_z(5ERlO7+%6)5w@ro$ML<;YP*GlTgUU@>c*oq zGyQ6bbg6VOc?V>`TSs3ZY#9cU_7BaSSEdJ~vzdYJU!O*;LbAHH*gJG1ky>(8&w zfHiDy&diKKK;|BVCNP#YBorM!L68wew1Q*<^jl(0VwlO(mt&5`>~8wFtm@kHruf#?6&>PhO@HS9EBI1gBiCQ8A2%us7~uweO`^emK?fEOxVEnrQGK! z8RzMHV($CKYLw4S!__2}nh;+UA48sCq)m@o1!s-)uvlVpjqDUvdqlFn0W_Lpi0p~y z7B+-GblvP{*ZSYt1G!DJ!_bw;B+IB%Ql2H;z972BDhg31|txO5> z9tH&VP%`a&DDdd7Xc$9u$vNIKi||ntr$F1=`RZ1ZnJjOkpWgmc5j)vtFHMyO4(9xp zx&%dba*V9b8$MkV$sC$kI`Shyb5ipr3o}BdxUDbdQ=TWkKkny`$){ z8E}twya+BG(#r+tgS* z1eVQI&mC!idII{LoDV}alD)7E`ukvL`n7~~f<*{hqHIdn4{o^n!!$f%TFu{ZL{fh_ zQdv!YGeuNbVDBQ@?{-xDb|}MZHRx_FQrvqdXUSeV-+XL!migslai7(T(L5eL=a;#4 z7AuFctF(f;PlKjCLoA8_$a<2;&J4eDiVTr%e4NDwPkl|z)W%0Byw6!ZL=5(NUK88m{o0qH-p0Bg~exoZ;3!ApB<=SF+cZ2PD6JKg0?w~{Pxb2 z7CqEFIx^d5F3uUD7Z&5qDf1VgZ5F;RrQap+6TuZ6 z8sx9h#PbRHAACx@E=GrL1~f9riFSsgAG_Jt``tAWKB?Jjy1Ck$sq2yGPfV1P7%i8B zL;utsy$7qfF4h$ zsj;c)F;{N$4=!F_7Muw^xMWAE$7KDJySh>{OUVb4-ACR4AmKme%SvAY(Eq=VaBDC# z|4t+wrq!8;6A>oQk9Z)n_n)S%dCs9;gp3}_N)s`kCq4iD42~GS{O48zj-q8uux^)T z^&B;{NnFS343S0=JOCBBEo%PwMVU$@!j=1WLK6@hQRMcA{1c#~93fHE9FfxXdin{8 znfHo&#i3#r_QLJi7M!1@39Ekaa=WR>S;z_SHcZgd`NFJ(&80}+=N^aAtf^n5l(3K> z${0Jo0UckqDuF&8TYHq|U@dmiZSaKpp?&s+SM!wdm)UpMN8jK{aqzA(6dxG#_TjnTzX^X;G+Uya8w`zT3~hj6YON;7O zuA83D=6sH?%>J0>%@&7BwprK54eNw)8)I6tWo3cb4`-k6;gB&Ej!c}Y2XhPMm&Y1+ z+eQ4q&KX;`wL7O99|R{@1g>C!WhzOLtV>-ehR#>uu|oz$i=5@WMuK)YT~fk1`pV50 z0e{<`vw9gZVR`U&+t)`DJ16aOsTiCE+s3wa0Ym(4V3#(h6BJ z-chGTXoleBbKmf~a7A(iq&_HCM1?>hC<*D}_Av*h9py%*$woMZDW2M*Is&Sl6-I%d z#SEq|z%siaZ4UWEyf>{>WMYPHppj4I?wbEz|K+@Y@x(vurO7W?2*H$Un$362D{0Y~ z@x?=t@2oB`C)#l~1TP*~K!*(^p}KyyG7?w#pCEmiMZDJKD0lB}_iWrMAqMk0Yf_(e zf|8o(66lY5UuZsrp6Pze%3vE}byy&|3#Nw0AN-t_qCkn3SHg#cmlu(3ttJEF zde%){RB2AC27wRjl!V^?TVf%5>H{$0_nPPW>9$z3{#2OtnMH~mONk##*+oT>ukg2= zKBhL@c^?7k(BXU#D>1w8hNIh@$sa{w_~3?tK+t!)8vsN#a*MhQHF||$(u#YL!T9nN zTktNJBvuag3d05drkmTV5@-2V^~KR%oBr!S$74hs2#rUWEhS3 zf`x*7+B^zUKCcbu*Pe$-X=A{@60tkL!dF`G&=1 zwTlvg$k<1r{~X9u=k6pDW^coT{)RhS=;l)90nJ8$7WXn`fRs+)dpw84w?RQ$dq^v^ zknMpsYQ-)BgS>AuSglz84)w_T)ZJn9`uPK6 z98O~*JB+Rt$d2~9*u)E^x+-(>g-4;?|bJ{tBh z%Nhm2=^g(3{MQI%CeK3!z?6-*8(;IP9P8QL2K8p`1iTv4`*^_siv+4yH6iq~q<-pM zr5->%E-HyVwhMd5NBd$(z+qac3lAWNf0LJ=#coP5F0#oozbG^=2LI)IqPT0aA=XnK zurr~MdOU&EkEXIIh;pvl{R0KjY}G$-oVMQ|5PH0Tymu}LrwbDGa`PK<6F)e*o8yE? z^SrPMrAPxlT!9J^+sey1L#E%>KT&D{rJ&bZmGPcw+Cy)d@NpdKy5h$l5bo9z3VnGk zewCE!G7x%@b^Mr<)9BSKAtnj;3zM~)rb1H^zYGq7+9DED*T`fwSKYWa2XM3Q7QYcb z?GLAWk-tp9KoP>)xfMbX0-Qb78qYk^zaT^7lp>rYz+f0XfPn}=LoCoahHk#^%Vzgn zgx)@t@^lY1Z01nhGmH7aT~Q|RAGm$mn$Lj2%}%S-aLz_RR+jeN&mv;!7J^29Z6zr} z2`Ci-PvyrCKYqjo``m-08MhcdLFsp%k!MaP{;5A})OWkhKI6DuF}fLeeY`}s}7Sh+8`Uh?NqkjTbbBcEaEgIM#Ubnj&i>PV-iqzfe3 zR?i}30mwY>8~j43cNk!=o$YejyNPEJ+wTw`)XR<%RPEp(bj<|0#E~IB4YNv;4C_=S zJpdzd@Y=h+gu+!R#KF24a25^`T!JQZbdU4I>&W>_W7fh3VBvBYFCFQAD-9EDb)J~9 ztl;M1;hC{9*R3+`)X5&U=6ALXRg(shCkiSg^B7|SaHw@bHX;;Y$mfz*ulAV|S~mnp zmT$dSOGc>E(CH>)KIN+gpH%{a9-!!3$#99K#x6Igz_y>B2ZC_WVKVr0owq=OXehNF znEY{O2)f<20rXr>!_=hoLhnyyGnLN2#4qC=^#tdamp#z#w%a$_%pfDfryuo$o&2dj zb7eWZ|84nXbTw`yc-vc;H<%_4faOjK=x*K+cEb`raZi}r_59!`rVnMKHRbz`rpE(k zEl)AA8KMB&mXj=v#l$l?*21mPdm0HD*JCWVm$twrC{4KP3I=MSeVG_B7fhDW(lq(k zD!;NJ=y+e-69vy`E){g;7dD(R%M%`g0r^3__yV;p)`-gobEh|do^ja&q`<%anVbXn5N+e!Ekt(${wQ;&X6V!MN3mN z4A5T4MiO5$HVF!Nh@Pr^ytuwl@!8}B)T!KE2L}g0uJ($y~h;>Vl2O zdBVDLgazb2o?ICUQhN4?5ZaxndCn}m4R9Jj#=z`YA`9ImK`$IADU(&1dn~p=h+&o8 zD<^S`VM4>GGC4YHl8I`!UE5V13KB{DkhTcu+@suQq#TfoJAt zz?g^wS8jb3_Hp`k;kXSSEx=3k?wsn_ME%F|dOtbgvc>Fb*K9ji7jg=Ds7A`b@C;cH zLl1Te?RKK3h^D2Irr=(01SX+GE!KRLGg z#%}{eQY6Mimfn;K&pc6Mwq(0}8&1z4g|=vpf`S1qB#4Myl}cWX?_53GZ9u&pGiuq#-SmZ!%%@Ek-1ohYC6e&-aHTvEhDX! z<}-g+>}{@nO7qoK^O@-0o$Jf_`xf9Akq|q&zjm6cri{nv!01G_6Eq`ZoJt(uXv=RH z`PcUvrDSOiXU7-7C-wHf7TlXOA(xAp@#%|Nz}W53Y=nx7q{ovlSeBX<1;w^P!(d6% zJlwo70x1J=W=n-y#d_5ardt!mz{q6^m@Vz5&Hj>|9mrKwK-#v#rSTa#8kXaOeZ1IO z!|7o<=_E@&P3!ls?-lYB{#aF|NDF@34u22Yr`S4X#KWQN1VM2-Sf$OMABVnj^VtO! zxxD}0&1L__sFg~Fs5rlmnMsp|I~mS;kqHZ=U%;{IS^Q*)%JY*@*ZQQXu5+Ob(K;8$ zYX#hWi*b_f!?u@dj@}?d;-8w+tEMwtVpVtD&C^nY+7H_uibGGuKAd+luneW98LeA8 z5=~p`c1=9vu`##AhtSH6N69dwNa(*~b2!v}ADr~{!rFUwBKm`SPQKE;{35yd={_}M zqr|g}G2R|xgo0-5O6|1Ykl6#<=e&e_6&$mbw%Uc$HCMa!8s{%SKloc1{XwB}p%`m_ zX-O7h#4F+I-#ceT1C$Tef|L+{Ck38|^bxkR$B5~#uFQig1JLSW2bRI-<@{+mfir)T zj8D$3nKmKQw2ee>y@*VCKEvtVzb7Z?KK;r6?&O%n=JC6a%~`qI)^;zyu=l)C@u*@u`?qRcLlB@>cTW&;l{7myr1?#WVGR9^~n zIzB{V+tsn08mqeiezU8PcvIE*qcHMGzGp2Gg zHkxse-vI zJTZPTu_mB)a}o4r!kV8pJb%N!++Qo`Wf#~Vo)or&&Rl500K~UWD){YRALRv}iAWoc(TpGPz7_>VAc*%WlAKs38 z%^y7pN1Mk&sYImvwxyE(qIhy$9VDcgmBVCtqz=p|Yur6{lhzE~FQ=^{9tpc%Zr4sv z>xQ!-zPH$g$VKB*7DPuz1VW9I9`EgkhO`_$8$g>C@G4TBwpAv{h&rofX%j(kGLy2) zPPA6O(($8C7`m9}vUu-+yttR+gaEf1Qqo(6*epdhF8*xY&rW<5(4=1N8`gT#9l(pb8 z7???mi=beAz-=76-q#yts?`4?JX3Kl{axf-rM)nSaxR_zNt;gV|FQsvdIpJ2t^-*= zz{iFXtiTm-9K~Zx^Gs4{H;dWXBRizalL(|4$ThiBqFb@b;A5RpTLvfP( zYeps>OQ2d4bGePn16|3{)=EyVATJX73BnhdE=SJ#=KmPnjZG`Q)5^pK{(kbV#7MZz zaiQt;{U`2Q`cJ0I%&z3VnBmF7rN-gkAs|R}!p_%fCY7dwr}A2S=5Q8@cY%8U;KV>c zkAFf_1HsCkn3UG+c{0<(n-|&Wz8v>8PbFPMke9dO$B#_8BwJP!3=Xnem;I@PnJu@> z!15{gxkK|S=iTee6ZS3oXPGvaR-c-rDc>2r12y4!f@rG#zH=4u=Hcn`Zm6{MUTbO; zUbstleBSu6u2F+!sKNVid2~p`?Rb4yQM<&Y{w>JV%syVyfTrLGJ~jX35YGrpmb) zLjfc+LpL7z_At|_mta+@G1jtFoytuz-#a(v$zo#ua)=b)oY3S(|Dei3VxmqqmR@rL zCLKnPA4v2yoUJtA?m=$WoWsla1L54++1Y?89*4JDj}*`6;ygs>0tl)AnKB@IpEJAD z1xp!-1{P01mi=E17KkM?1T*5iVO!hS*l?|H^g45p=9>srh)Kw4`O7EC-30+wnLBHW!F8wj2PG=9}`{;tW*Z+*>Ii2OfB9=;*xlj4xHuEf|6sP?-FtPMb4^S!A% z^R=_HySY3;p-5)~B))SqvE3cw@gcAYFHD~oX#iB5FermGcZYRxZmh$Wx9;iH4QwgI z>@@)4o7nj1x>M)1Rb_Ad%B8sZ)V5hbRP=3Zob!ECXvpAxGJm1(a)9`Cz}@nda9U7K z=XCjKGjMPFwEickf?-Fiw0g{;+AHnCw^<(*#GQ)`-O?`IX>@xEwxRs#4XEm;Yinh* z=@Ijv6O4R4%+1YBcP?WkRWqU$(BIj*YOvU;SNPX^cfb6uns1&q^YaL3X|>igq^Fwf zC}uFvz7u6`zHRl9kl~8meS3J&?BUlKiGff^;P|^6DHRzUyncGytQ`?fp4IwEG?tmJ z?WNm?^hdr9z9H5Bu0h5I0w5F-cUR-tuIPTZJ}@j4f6~d`(LZ%}`OA-^;(UxHUBr92 z6VL=wqfAnF9)20Lq%b>1G-c>N0$OfR8iIGl za-(@Mc--e%z{;R|UEy~*Bz9aX&evorL)Fmt!AM409p|UPClDPYF&2-58#*ib{gebJ z9|UY>ZpxZ3Q}V=4j)xga2M0J~#eP(F2X^OjWBmiyr?~WK620+5xVu(vUq}f(0;v*n zKk_D-#NUGZkVO-z;WJ|JBzF=%ET0!x8NE84Z9XEz)B)v^`rW#%e}qp&fUc+h{YN?# zmSYI%e4pcJI1Y4lUrvHqnK^EvONZ9>6C|;By+Zah;@ADgoieG6+kRjwN_Y3KVyH2y zS{50=8<;6Z5P$)tbzXGV>Y9-#n5$x9a9+sKpR4;A;}*4!D->*0IbLfRx62;+`V zeveoT82U4ASWbZFz42WuF0fkz=(0;oBql4nL zKk~-M85DfRPEMZ*Ym`)aj_Dx%ai%r^vLf;QrQ~`$>Lp6(`=!rgX!Vo`g_3OopfJ^e|8-qgV z`BDbNua;TJ8dh41Qv^71<*YHkILO*PNvW_4dwFS%lUr{AhCNV)0WGHL>**bfrN4T= zxc`poXQfS-n{VCbEQ;hQKl_%t0YyE_3Lq($RN}XvPV%*E?v0g= z4R+2UGBR@L{|T4*fxukyXL2?OYSy26kDg0-IMZKkOpgFZleO>gYsRgewvPHAmpU;8 zaz1X}ggDCgPB?QvMP-!i)D)J}@B}zBUV}jaWOGTt*=KV=F_IWd`!D{{VoLmwJjcDB z(GbBvr{(Tw0Okbnni)6S{u40|536zIZl1(6%Bth$ZMgzhM;0s4z5wYk#mt7m)AUTCF}8%|aszwf z?Z!#Hvzwc;)1y@9TyDtfN&Vm2!A^c&k-VM%zTl3(4O#&Gnu6 znFwh3eC)X6_#>FvIbBfOypw_;WI2^*&SauIt#}~KerRSzRb~)|ffEL__kCVrJ_1+ZNkjs#VO+n72S{W0neKG3L! zmO0y}*QY>r;A_UU`Rv4F1kx^C-oEm4p`JT^d$)9p^s@6_i1crHC=yA@$l3O)@OR#! zuiIRYD}&BB-Y`iS^WesXucCZlx}e?&F50k%I9>| zXyN2w$oultYj5ZA6WPPy2Sj4FRvJqW@Z?}+4^&aiKRf1EWa7=BeZV{|<~7iRR$b(` zee)Pbla}tFfc}(zng05eFE5uQzXrj|MQjt8yhJ&rW4RU(8)2?fIys%p(Rb+TyZ!#x z^%j6#tS~%pOT6t4@KL9fKu;l6p^WB4*uV+qAPgReM-1&2+P$>2^m5*5>8$kTpMCXw znf(i%|BEcvYrL)<5<1Iz*t}lEJGfr_wF@o? zrh0nTgPSPWJg)t6fnoRGprEA#l}SUi{dCz;Q>87?#Rd3kPp8T)`sQzzbhXam@-c~w z_@I*GvX!QmneC()H# zd(BHFUJms)5rhJE>50jwV8&NwqoL1vm&w)e7oE;F^3oUaDT3ud#KfPKx_7Zxlzf38 z)^(;sS)~NdK+pBzX-8)hIx`5QOv+Hx!tyDq;vGIl1_v%vOGhss^~V-^eZlEacaUpz zMjD2bCm$0#qY<`YnYN?81_%94vi4u6Cr3|_zxydUe*c`PO~)j*-y(IQ>2SOhsJJ#c z%&SIfa6#VSV0k`aC|?Ng{2XE10%D<%F-{{c5eis?E@|t*%I)Mjyz%$VfGz4oB_6?spx7$XvKf8 zy?0fP;Plx=5(%}-r53zaym*N9r$r!Rp|9k}u7KaU;IWn#r@*8<$|w&Q1|4fx;@3p? zJk%-GrfGDMzz79sG6PS&RnpfmuLK0D08sQ4D3&qnzKRf=P4Z|s)Stgg4}h-&E);|K zvy+of6{80C19_ITpC32WG5BR?2p$oh!z#Ci8vp_AW4*MhkmHZp140A~2NBhzr)QT% z%3%yrxVS!z4?L`^QwD2WTU#5iPVIcp=}|6&&vm_({PwOtKbcWNvpMw*G%JnN)9!R# z2i?;u(s?2YqoXs+;jEA{>fK^%n$#H{VLi6OKwPjN9kov_B zlBPh`g7>$7W2}mArnOTnqq7xQ%3_!)MieTotvcG+N>nup-2XxgBO{(_=J^=!FoMOw z?YB~-4=owOJt@CJerkQlVB8QK605!|?;GLk@sWV;HY~-jWn6_pdEOTfx6WIMZiVr) z6wlQAEebE(-ZJP{6>x4+6}}K&>$fTrGMR1?-kYwsxDt7zQ}Eb)a%wC$&Fhx|t2&Mu z7_L0ZQL}MyP~EWdJOi+M@MZ==J96U2s3O8FayicAZFtr~l=e3pN|~Nf)Zn=8q+D)R zH=Q&BCCRG#U4rj6l`jkK>y}5yE;eXOe*K=c=^sUa8nX76gi;~Z!Zd~8B#1w?krp{* z-{^L`Ff(O1*>A#%z zwW$3`??WT^TVSEN3S5d*X5AeNw#!_SN$eJSop{La2>vxMX0Gr+DUn{Co9 zAbq+!zx0IzY@$i@iGk_`D_Fh6zFue7l z1fM(`C@hDV)SJ8o#)!^rQKcMl=sB6ZSxmMqsl8ZDIoq8fReGnlLzlXT>gIxdkya>r zEX4vHJG|}8Rt^XR&B$6@^=HfzmyyQu8gXm*oZ)?-@Vg04kdF?PpwG4-PC!MHWDv5UnyIVKki9P{JAFX{&!Ox@=j*dw|)sKG`d3? z2P#d(M{qXyW@Z$w)WP(NCd=jMaEbc4sKc<#!&E}Zj=|HZ{og*elXr{F4o!}8Gk|w~-icHOl@+eEC?W z`x0{aNfa6`gJ2q{#8332>heD;@-aBbe}DUo?g&_@R-|JY<&Jkk_=0w~bt^S~ZKYP~ zd8#})-!m1&r+h}GtC>8Tc^P$;8Bfa8llxr1^zzhg{ybP*8IpQdz|B^|8ak%ecao#1 zQgb%%|tqcZathO18iFRk5VDN*GqSR z38GZf1_)`3X|ruw0J8~z7B*m6p;ah)v!P;T`ToVFECBU$G&Tm2FUfBB80YFc)Vcuu z`U6;Bxt)`fv2ms!u+n`6Xv|Kt_SK}3{p_J_7Y*w23a8=~UFfw#581VVEc~!Fgf$0g zET!?Aw$?|Y@=!{33Uh+{5E4od6458p>nI^_Hi(lL_*=TPUFSr2t;k~MJp9ogBu|!e zgiIKBKtRB|WLKAmz_tK*=euuynZ18nycH?9nh4xZfPvv_1#7#kAGWo>$c5WpbR(r@ z((~T^cl-iw2vxK8dp?dMUTvW(d8rM#6Qj5wUH0q_#xC~+-lLTH>#or^!aKoRe)F@l z^?!6TskXc4S?i7tRKnsnph z;Zu=F+OY?*MWI^OW9ZmL*))C)gk?RO@T*`wo=Jj#6#xArb4G9AVXgMwrzjHgxTd{1 zC&;>Nr>MzQ|5Ef5R|!yp7XnwoDiuIHH+Xz~u$21a-Vd{1Rj&0k2IJ<@JG2T}t?S1bQV(^*DE*|uGHh8#i|x}`?CyObKbTR;Kn z2Bo{Z8|jutQjtbd8l+(WDFNy3?|#0uUjD;^;ht;GYoB``o1JG>5gnbe>`SA!-_N7h zZMiOGOOS%OmUB}Pr)*pA?ToGm#=1u{?TazAMLx+Z@*ytT`vUVg0(BESWo(*Ey6$lF z7XQ0H0gq1s4};om4lJ{Ze)36#L&c~)AYIfT6$pMXGJ_@BD|Hz98uu7WvZwFBxf*h*HoTfv_a&+Cq2) zW*>&#y1pOXQB=-e?0w03_@&qRM`qWUi)ZDacpp6|mc5-JT$^tLg;^>TGdi{a3B?5O z=^uZ9Gf))K`HURU=y(`HH=UIg9WNcZ-oRF&OJ|NwuHFMJH-(IoNaB?ljCo;^OaRX~ za6w$O7o@0p@}8*en9+ApjBZgOP*=(9LziZvp)s9Fjf64b`QT9pH`p{8e#!N}lLPi8 zz=a!$#pEpwiiU(`3rMjK5fYtFHP~q z3#Gu&;gCBhGzjBWWM!ERe`rClg(Dw`N8gSB&RBTRt%c^D9!YFFze&%qmX_Z6b{sX( z6zf=ryS!%ZcNGwziY_rKmQ?R8Z|+RJryXf zm8+}X?&Xo*RYPFVz z#)$pQO9`w<7E+1K8oEkTBNPinqsPOpAVT|?0>7ZZdI1w@0+y?#@POyXcAY`@nng28 zsYrVZqr9x*g=$i4{VZ$OUEKWhVty8kyojWv+q@r@LDBA!Rk!-bcDk`wQ2QthEnC-= zv#@BWdbL zrKChL8$wPDrID7F9>2BzN-ZUCFY@~J?TNHuAG$1$!rjB}8;`}a&5mo<^!$@z>IWuP zO!bvczrmA}ll7CYku>3&@?aFq*ma_J5@34n`Iw>)QISZ+pnf#_@$FJlM)XK?3A0d@ z!S64)%TuM;K{6V#K|gc}dluAxkf9-=*kMS12(PH4+io&IjcVtdwk6NO>bbm{%YS~@ zeF8vTLk(;w-+(hMMb$g&T80hBwmB=MyRXvVup-a_D^FZXoUVUY1gGh1{?uk` znSTUHpqSHbErGKvuRfvB2~;kvEene9G}v8_E1C|kn-}YsH`JG9rO)VqKThW4Fd3+% zFjU_)Z7WT@zD@OgEX(y+6U<@oLgb+>^3*>+`P~nIm*&j-!fy854??#A!rFeNmg<`d zrn5c+#hM~C4LYDxX}~}wN&_!9L;}bq%*Aka-k{GvmA@ynsX>Se;U^Nl#Us=Yq@*Lo zkt`x3NE=kYtwNQNfloo@Xr}J5H2PVC|0>4;c_l)xEzA<`x1F%;Q9@^nVj-77U%gkM zXkZ!%iJwJpaDU0e%SP2yQoN__NMq>Q4r|e!zVA87$-TKv&UkkLoUmt2T6(Wg1|*Iq zeJYkbDWkpzSF_W?!7U7D?{wKdKaT<3Y7_Z4ql4m49}O#XS%@%HB_oBtuaN$fAKP&~ z32T;>#N@PYT^zrUkh?=i4|ZvFsoBGD^RKj4PDrR?wYBM8e}$s044Lwo4lH`Z$)zy- z75Jwo->O$-d30WP9DA+#)F(?hkE3S8{&al6lHkw-**7)jsC$R%e(iGpdBTe0_QB5heqZmY zhc(`?f##DnX+??@dMU2A{jJg`he6ZLk9x-3<2)^83duR{OEw2B4<(v=1VQcA$Qr#- zP!zVlGS$ByKPv%?Vc-Qye;KQ&!oXpGZ?bZr6B>8h*7lcQtt$ zI*DS;If>;}^Bb!&`T(&i?V?uxy_dS~AnLK0nJ4Ndp#B|J_`b zNZ9vlN>`Jbiw0tcr!kri%<*%)iQKBs+KS(CGDg?Wg->s2@R6epR0L$i7$3c~$s$BT zI@zxCTg6)7(~yjz%$o#nfX6zJXk4I@WnwM@D)TjK&a0P#om;`XT)gF0meiDV$kszK zI;{Eb%ZK08lvOTqaX|9wJ&=1E?qXNd%Giy+znp5~wD$Az^4LZqi>lc0Xqi=2Rn=5g zWltS1xK9youlI^GiIyD9uq9lZIi;)Nfs1rWE>o0oQqIW8kH92&h43-HxVqxdZ!kZ& zqC(uWji7~xo0tYK_T{!;JRD~Yj2Fs`RfopEj|KW{#$FAkB^&n(za63Emc4!+Fsf0#Hc3E6W`k6v>5l zDHAC@OR7~jznOfBKtC3JDS-|8rAri5(A5>tA8mm}!aDxL{7f)n96XT55O*gExU;6s- zIj;l$JMY)izvh5g`{UMIy@m0r$47?@L87be+mgE+A!K|rhA(A#URR5Heg_mWB5R6UKIslRuU3In95tS!s>}3td~8q%g@VQ z0k^+612+4%M-W##g6{yuHXN-Q1rvf#D8=L=4nk?V@RUnjsjt_;3b^d_p!(){djGWl z_y(O$iYcyLn}5WR`{OG|)Ub)18N^c%qO&t|`n7NiwZcJKlkn@Pb&L_eaFN^(>CKfD z7G^%)-h>6twNut{Dk^mb9e2DW&m;O15tk-L|MLQPxod|8HP0E~IaTX`C3qOT|LB&L zotI=G>EoW|I{EGXQQ~Oxc|_xxEm_K++xN;t1|t;*CnM1yvua5E^*&9bs!bP^g8snn zD5k8UdiCJuyv@!#l3%b{@cO(a30;=>INSbtlab@;pM|mKq7tX?PveK%tS{^YVJo)= zrf^V@2v0JTY|cIW%~8EQ$u&*U_J|tn2ZvFLVyWg06hnLplkRAj{FkyEG@n!pMX$+F z!8Ulpx9y~sOTLebhp*lGGeTqlih#6Z;j@SXoZXV=#U z|NK8CGCydM2QspwMv{Rthq3sU7vpo=>|XoTRCoBvb#C;i%o}^Gss*_JV>No>Njbrz zFNf?>4)96~mQA-L6QTCdynZaOJtxYFwbO=IzlLuqKO z)oSLl@;d)S*X0EuTq>27b>WfN{XG&8n`ZA{%wJs5KaVoK5fQ2nj)a(+^Jyv@#>%;- zTZDx`rD}95bgQ5Q1&Pwm8rZggIfhs!sf0NhKV#deSvLm!D$Hecg@2qgOpA8Q3nhEgxt42`nGJ{UxvQ8VEn{e3g4iz>O_xkB5XUcTQEm zd1v6t6R21HwjS82PGUfml3_-emg(!CnK*-!2W;)VKLN-+T?lCL`7A*2tTD(Q z&+kh7%$ioBTea8+?|vVQ&pXPq@^^ZBb9N@gx%cPeiA5JUw!3~46Q6ISTIC1sf8RBK zFqwqtU8%QUR0UDjvmF>!EovHx^!j=Ie$uzPA1J563wD3p1j-hu8w)MVG33q(-SVV; zn=ZW|EDQh%6p9D&gG7w+>&Y-kz;=ME@1>HSKXYgSt@5{@fb#|&{f@qnGD+v_=Wj=? zPBqul%UaojVxJJgyWKZ8wGPYPK0aY4KbXGO{n$-%U?<^HNvc?N%m<(yKvlHf{oS2& znT&?z!7I}2CY~>FfuMG%%u=h*pP$bs3F1!)`M}w(d+>T7vjBqdAiBaNPg~-mFATs| zIy;?@mlNcYd_~Btg923LDkPhGwVA#E5qcqJW{N8hj*Oq@0FeF7W`fUS{=;cD;$+wT zD`udLX-KLV5zMv6Zeuu$uX(&mNSVF;frxWi@Xggmf-m6$%%(ZHY^qjp!UemF|7%M#2ws=-K83ha$ zmZB;^fd?++68`-l#X`L+b^wv}O#lzeff@=7YOYCYZ+_`@xsA=vcm8|D=?y4zpZ;JB z5+Rjg6Vakf(#X4r;fuy(;4olPy}~Mw^*Oe;_>$|68OS4ff`i8%#JymqA>1_I%RXRZhI^7-DtBoIK80_wI zuz>YvP0_;1dYQ|F&@dMiKXs0okEGOhTIX4fALL>*-fF$u?shN-4DSXtJ35VQN_KA4 z(WQgAT=$6_b}qTYcOu^GXb>mIeO-ZN!!uS2l3(_S!|OL>}(x5WD_QJxd1 zW8#B8zj#|ih`4-#gSaskTy@{|n-F=lK{1Jn0`c{M*4I~nWg(A1ry3mm8ydn51x2;H zNTMWFH(Mmtpuo9v1tWO};A7UV|8!^T>+3bgxBawp85DR7U1wi(C?>=E=rt+5`=q%$ zsqwPM7)0Iu-v+GqK!|3Q9^&mu!dglH^i_qoQ zV^d<|K6D1+yQvMvJmM+g_?j2`#Bw1YHA&Yf4XXhG9-uG@+U?d$N7DTx1*3ryb!jK0 zA)}@F$<~qS#X_t+HUr+cqUUYn^|wre0vZu)yfgCUwvacbNUKEwEfdo#$W7!8t;~XaLX}*(h&G0Zwm!&AC%8Qm=5p&ti-%OQghC}WU}#sL zi=1guT5P7RzBvYL6+ho^W*A-FdbDrHIeBkVgrjTHK>{QHB7qF}$WaTT`q^+h*E@gs zjbtO7XH*0qFRbQeS_3o)HBz9AedF6D-J_4l$bAKsV|&cI?@Sk=s__Y}Vpb?Wf!uXr zN>B~Q4Z@pCMlwK>s6*4z4o&u1$^a` zUhO;K-+E4b4D>%+hg_POg)(*%Ey!q+xCJUu3ZOz)5wpL2?^5zTPh;{@xS+O*5a`zn ze>7ZmmGu&S)=r;Ge*AZ0K&!$*_zMbC!4U}6tI-rOm<*QXC<0iI@B=7 zN3{iKtZk5F0u3bCw3-o`bPkf5WA;00;6&0ql7h0oE3E8BiOgYWjC{o%o@iDYFA=$& zI4zv9dyDXE6Lk3g9E3j48k+f@2+M;`HCY=zSNonKzh2BqO-*g??p~)EVAO)Rn;LgG z9UpGp=AVJb;Bl)k;^i44CY3mDY9c%m4IMonuoOguqgBpUx*R3Ry^Px40X%jBjw|wT z{qz?&IQSaC4}%qrQi=iJlj`bO4-<1{`%hRnkzFpq;?QXYs&sb>kSS8U2hLa5 z!j?I5v&d29b#BR~1knOHmglgO^?-zlz);6+@);N(UTT-1* z0#3x)M5h*&AZc>E$}X+bDc+IK{Kt2@oj6`1l&vCOQV^ey7H%O@Rvt*`odl8?s508^ zobZ)1f^>ERQgD7WinYL!jR7qmX6pTKEvk|Ar*Vg-w;y!aol9T z;7JZt)Y&IScvt+{B#%!@U1w=^sfM*^peW|{aV6{{evDnCxUg)e)`KvT&YKYGr-)wZ z<8^>|2UD45$qr3vf+TOtPzJbix|t6$hsxzIyAC zT~}Yh9hG=UL3u&v_bpd3v<&DQue$#j>h`+LChD0-j8AA% z&tuUQk(EQfM(?HN*Ve`OzV*)n7N^iLkR-g18p$B`;{8CN5D4@O+kKNmN8iUF4abZ^ zb&?b!#9#`Rb7t?Hd3!L5vxVi57MMXg_nJNB<6~hbf)q4jJ*spn0T^ zWB+XQ2i3^}g+kYTzY18GdEX^dKkWw8`kWMM>E*BI%1{0#2TAVSpxVynL6PvRp?DfZ zy6~SEcRWid2{(s?s}NY}|diKepO2e%#k1 zARzF2e0?y7$hQisDH(j}^Y2f8jM?&fj?#>61yi;ge?W*9aFH(*1BcOoBd=+f?)${{ zpuNEFl?)Spy4l>+J6M{PDWH$$XfpdprIdoqa7Q&+TwG4ToDxn}Y~L-Mk?LCTGq0{R z%d>@AHey)7Be}nE)25Bci11X7kA8qH^?T?W7R|bdoT>G9DC-b-pLBdQbzG1{#6sH% zcL)eQ=QQC9I@drTH>A7ADDcTOJ6 zoohB2pNsb4y7rMI=i}W&C&CB#Z0a!lM!meOce5U801?d|L+dT+Jr6j(uDv-+D@%^{ zjMj~#RS%sdZG>7)6hsC**Q>qv9`0&Bx3_kc6!myR^J&T6N}wMR)Fa!NR%SB^*^>>k zi~{{FJ{7@34iLlJWe6#TEo7!!m`?@>AxhRSI}cuBTHr{w*bW-vrcdN4KAZ#n`<= z3D%um zvUV6u#4d@Q+}lcJWs%yTW%Au`%mB7b6LD(%-r+mDVR|iKiQl|nX}sTLNDvm=K+||k zcXgpdZzgKx!WryM-Ge8|2koaQDLFS&&0&7$Y|^7EOY zUjFs7|37MCPRbYK*V4{S2N?akPQh4<85Ffw_4&N7gG3R~X4@ zxrKhBz$l6Y{bV@j>2k{v^mp>4ToVG$#MpRxflEihLp+IOU25b~Q*nE~E4N{G62{Hv zlFT}4k$g&fs#ipYPM2mqA5>HXhKI6C+6YrqY0)|9V5E&$FGGucgox+5q-Vv)Y8#X& z2BsU!+rQ=>NJvV8Iqn}wLbSkA(ni6NWfi#^hVEkMBA;d%%XWv~mvg7ox3puFKqUX3 z8-IUDdA`}`OXjXXio700!Dq5mwRy>|Wm-rU;?J6<*tpof5l#Wrkpmi-xQNKR8r|%% zor?=sY@UO|!?>2gkMqE*WW;8D1=KqNRpx-564-p=Oi%zt=r~|$$W)3CqTMTom_3?^ z#jTSb6uM4B@*jBT5>VBa4zDhn0&X@Uik+h)iP_#dUoBc8OK6jq*py0hWq#I)38o7z zt{TN*Ya!$^kQ0fZ4*c1ldQRl>g~r zn%0%fEYsnd8w5IjosNh?|GjikZqb5dJ*wRMGj+QZH}hrfUvYC>3F|~cqC{+|zXBTQ zYl>p~itDFM;L(3MW_H1fKDG_ZdLFEq$TSQxM5xkR9pB6|*k3;#EjyVtz_|nj7z*IA z5;mG-6ciqxl@evWtGWVu!Y1wO9xrS7)d_PQzZu%U%pzT$wN*o={APbkQrkXVR$)ye zdmCQL*%}Nr$vLDdsyN8ct0#zdPO=7Tdj*j(0jOV^N_}5tX+|QZZM2^CiO*&*9 zODiySEW~=|-lh_Wo%xox(?c1Hdh>}?G6aN46BVha5NUgPSNpmx@8iH{z`=hD9MP>S z$0M_Y_C(sKX%g_Huh8$Ci2LVV^rv}tk5x0)OYgNvEQtXm=1THS3`%K`O`BzHWDa&T zkaH}s9rl(XDc0eymX(3vbGqulIr`7R5Z30ClW^u9-jO zPxJG~)kBYttq|&mw)xJpSL|Oph{k&I}#fyzd~&FzO9>`}}FzS59zmZ`nkoGLW^c597h1Ba$FgIV{zjQguY z3hMlFPD*ul{YABoJSh;)TY+j&Ys46?lZyR*@F!bH;i9!}Wit^gP~8S?9^FPPFyqEI zR3<|KB3biDShM1V)=_>Hj=#rT<+ zM4ici^6_+d{O&Q& zqhs@X*f{~#cvv4fC}>)e8sBg@rX?DQi7N~`%@;R?4lEwO!1hvpQ4% zEPxE``#XQv+^+L+(Su8G4Z=%rKXdb~eop_>tK5VY*BKRh`g6cYHZ?zw4g#?H6qJ;% z9LH!XeUhJY=ol3Mv#@gyD#?n^aR(6T0vZCxTZ4jvP>avyNJjN^%qvSODv4$CU^<7M zK_O3q-rp&;<6qh~ttez5fnJ%(!{E10r3SBx8plOO-m=p6^{rVy&Ajd|veATNix?^J zWMA^NWs!hJ&}ccRiHA$b`{-_FgV~PQq1o`9MkgGtDiLBB9nFXz_mp9OgVm zv{N8KxClsC8s`E>nKs&9s-VY#aK0?~Yg5v^u_@(7GZ9n*uRB|9O*KHN)fUNJf?xXI zZ2ZO4shj`FcH*C2rQjNzTr>pz90_=}XFD1R2(%Cwcw}@kD;+Lsc9@!pDf2l1>q>38 z%m2OE@zaxH^OU24DMRks8*Xm!FTV~wqsy@k)bj%Ae`xXg>u}{xl#KN<*&jfg<_+h=tusPthi)dvlD`rEi-iQ7UCA zRkRI}u@aZWQBbe}oKWI-Q%+EUNycNHD_`Wr<}o<_>-TszHjT?uLNn9+dr!6qn!YHW zN*MCb^D^==fR*=JaP{FJ!EY;sf22|1bdfeNAui5WLcnYAH+YjoDzXqCiYfq7S15Sj zoi$r!)n#}#cS!f;vy?y;A;Lp?4l%GLPM0EzZqzHzS|UG1giEIu@?vevVK)fn~SUXV{xX% z^~AUPk|CO6CI$*3yri#Gmue`7X_B#i3D_tfKL6R)dwN7i)Irl4-($6tio`1GmVhLR z8Y*KdSFkwSov$Wv!0IGSmiA17YZ%F)isiy{}r$}C2dTR z_IYlEkz8F|{626?foU+l{Np0CO3T-`+e6AA1*_Dqnh-i*lZb7u=4K$o$!xzKFxaKU z>%X~BMehYmp#1r(swmfNEgQVrs|`;)Nz_7w@H;f-aE}mfAjf|j@{dwwlm9zK*o5eu3a!jvP&FE@Yy+EN_pc%Kto_-gE$gyZrJyEH@~kP`G|<)QcN8sCkza z2Dj3L^mv4BMo^wkv^b?6bwrxARp;>YG+y@LX{a9xLB?((2*x+?#U0~l{)t1lh;I^Ba-JaY7iaF(xMGT4Z;1U!39_#gzk{AU3PwY{MaMhis-r9Eh(qB@O(FyMZpVy)7u8Kr@P1FE13f)@e8#!hHEp$xwp7) zyd4=7@M$DAMnXvGoQ$Mw1}D(<_R+gV(SOrMgjnKuzWe&qR%G2=%yga|DVi;8LXt2O zjtrvF3X}*OC<{BE_0HGpc!;k1?-T3!E-FA|_p{ZVSlztlzmoINbsD$H≠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

p#@1Rd#Ke{C8IHDLg-^OV{IGz9Gf8TVf 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≻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

cN(3;Z*f{+z?`4sy@d`s3IcQCJy>rPpzoF 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 z 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

=M(og;aw{O6T%GFicbVwgB49i9^7C5EzrI!+(e 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⪚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≷0q2d60zP#|X`qBw?i@E~wD7@LI!$V)QAYTxwk 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�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 bQ*v!$o4#`_G|TfZyu<;8kiIM?=2UjA!mP~vk- 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 z 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%0DT8TPjN|N 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

xS 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 R=>Pz}jP%X)N_E`t{vSl`X$SxS literal 0 HcmV?d00001 diff --git a/ai_lsc.py b/ai_lsc.py new file mode 100755 index 0000000..b110e72 --- /dev/null +++ b/ai_lsc.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""AI Local Stack Control v3.0 — Ankh of Jah + +Direct launcher. Run from the project root: + + python ai_lsc.py + +No pip install, no entry-point scripts, no ~/.local pollution. +Reads .env (created by bootstrap.sh) for AI_LSC_BASE_DIR, then +points sys.path at src/ and calls main(). + +Works wherever it sits — fully portable. +""" +from __future__ import annotations + +import os +import sys + +# ── Resolve project root (works from any cwd) ────────────────── +_PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +_SRC_DIR = os.path.join(_PROJECT_ROOT, "src") +if _SRC_DIR not in sys.path: + sys.path.insert(0, _SRC_DIR) + +# ── Load .env file for AI_LSC_BASE_DIR (before any ai_lsc imports) ── +# Bootstrap writes this. If missing, constants.py falls back to /mnt/AI +# or the AI_LSC_BASE_DIR env var. +_ENV_FILE = os.path.join(_PROJECT_ROOT, ".env") +if os.path.isfile(_ENV_FILE): + with open(_ENV_FILE) as _f: + for _line in _f: + _line = _line.strip() + if _line and not _line.startswith("#") and "=" in _line: + _key, _, _val = _line.partition("=") + if _key.strip() == "AI_LSC_BASE_DIR" and _val.strip(): + os.environ.setdefault("AI_LSC_BASE_DIR", _val.strip()) + + +def main() -> int: + """Launch the AI-LSC desktop application.""" + # PySide6 required + try: + from PySide6.QtWidgets import QApplication + except ImportError: + print( + "PySide6 is required but not installed.\n\n" + " source .venv/bin/activate\n" + " pip install PySide6>=6.6\n\n" + " Or re-run: bash bootstrap.sh", + file=sys.stderr, + ) + return 1 + + from ai_lsc.ui.main_window import AILocalStackControl + + app = QApplication.instance() or QApplication(sys.argv) + window = AILocalStackControl() + window.show() + return app.exec() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..7c628e5 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,347 @@ +#!/usr/bin/env bash +# ────────────────────────────────────────────────────────────── +# AI Local Stack Control v3.0 — Ankh of Jah +# Bootstrap Script +# +# Fully portable: works wherever the tarball lands. +# Resolves the base directory from cwd or env var. +# Creates venv in-project. On Arch, uses pacman's +# pre-built PySide6 to avoid pip compile hell. +# ────────────────────────────────────────────────────────────── +set -euo pipefail + +BOLD='\033[1m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +CYAN='\033[0;36m' +NC='\033[0m' + +info() { echo -e "${GREEN}[INFO]${NC} $*"; } +warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } +error() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; } + +# ── Resolve paths (current-path aware) ──────────────────────── +# SCRIPT_DIR = wherever bootstrap.sh lives (the project root) +# AI_BASE = the managed working directory for all AI tools +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +VENV_DIR="${SCRIPT_DIR}/.venv" +VENV_PYTHON_STAMP="${VENV_DIR}/.python-version-stamp" + +# Base directory: env var > parent of SCRIPT_DIR if named "tools" > /mnt/AI +# This lets you extract to /mnt/AI/tools/ai_lsc-v3/ and have it detect +# /mnt/AI as the base. If extracted elsewhere, defaults to /mnt/AI or +# whatever AI_LSC_BASE_DIR says. +_PARENT_DIR="$(dirname "$SCRIPT_DIR")" +_PARENT_NAME="$(basename "$_PARENT_DIR")" +if [ -n "${AI_LSC_BASE_DIR:-}" ]; then + AI_BASE="$AI_LSC_BASE_DIR" +elif [ "$_PARENT_NAME" = "tools" ] && [ -d "$(dirname "$_PARENT_DIR")/models" ]; then + # We're inside .../tools/ai_lsc-v3/ — base is the parent of tools/ + AI_BASE="$(dirname "$_PARENT_DIR")" +else + AI_BASE="${AI_LSC_BASE_DIR:-/mnt/AI}" +fi +export AI_LSC_BASE_DIR="$AI_BASE" + +echo "" +echo -e "${BOLD}╔══════════════════════════════════════════════════════╗${NC}" +echo -e "${BOLD}║ AI Local Stack Control v3.0 — Ankh of Jah ║${NC}" +echo -e "${BOLD}╚══════════════════════════════════════════════════════╝${NC}" +echo "" +echo -e "${CYAN} Project root : ${SCRIPT_DIR}${NC}" +echo -e "${CYAN} Base dir : ${AI_BASE}${NC}" +echo -e "${CYAN} Venv : ${VENV_DIR}${NC}" +echo "" + +# ── Clean stale ~/.local/bin/ai-lsc from old pip/pipx installs ── +STALE_BIN="${HOME}/.local/bin/ai-lsc" +if [ -f "$STALE_BIN" ]; then + warn "Found stale entry-point: ${STALE_BIN}" + warn "Removing — everything runs via the project venv now" + rm -f "$STALE_BIN" +fi + +if command -v pipx &>/dev/null && pipx list 2>/dev/null | grep -q "ai-lsc"; then + warn "Found pipx-installed ai-lsc — uninstalling" + pipx uninstall ai-lsc 2>/dev/null || true +fi + +# ── Ensure AI_BASE exists ───────────────────────────────────── +if [ ! -d "$AI_BASE" ]; then + if [ "$(id -u)" -eq 0 ]; then + mkdir -p "$AI_BASE" + info "Created ${AI_BASE} (running as root)" + else + echo "" + echo -e "${YELLOW}${AI_BASE} does not exist.${NC}" + echo " This is the managed working directory for all AI tools." + echo "" + read -p "Create ${AI_BASE} now? [Y/n] " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Nn]$ ]]; then + if command -v sudo &>/dev/null; then + sudo mkdir -p "$AI_BASE" + sudo chown "$(id -u):$(id -g)" "$AI_BASE" + info "Created ${AI_BASE}" + else + error "Need sudo/root to create ${AI_BASE}. Create it manually and re-run." + fi + else + echo "" + read -p "Alternative base directory? [${SCRIPT_DIR}/ai-stack] " ALT_BASE + ALT_BASE="${ALT_BASE:-${SCRIPT_DIR}/ai-stack}" + mkdir -p "$ALT_BASE" + warn "Using ${ALT_BASE}" + AI_BASE="$ALT_BASE" + export AI_LSC_BASE_DIR="$AI_BASE" + fi + fi +fi + +# ── Helper: get system Python version string ────────────────── +_sys_python_version() { + python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')" +} + +# ── Helper: check if venv is stale (Python version mismatch) ── +_venv_is_stale() { + if [ ! -f "$VENV_PYTHON_STAMP" ]; then + return 0 # no stamp → treat as stale + fi + local stamp_version + stamp_version="$(cat "$VENV_PYTHON_STAMP")" + local sys_version + sys_version="$(_sys_python_version)" + if [ "$stamp_version" != "$sys_version" ]; then + return 0 # version mismatch → stale + fi + return 1 # versions match → fresh +} + +# ── Detect OS ────────────────────────────────────────────────── +if command -v pacman &>/dev/null; then + PKG_MANAGER="pacman" + info "Detected Arch Linux (pacman)" +elif command -v apt-get &>/dev/null; then + PKG_MANAGER="apt" + warn "Detected Debian/Ubuntu — some packages may differ from Arch names" +elif command -v dnf &>/dev/null; then + PKG_MANAGER="dnf" + warn "Detected Fedora/RHEL — some packages may differ from Arch names" +else + warn "Unknown package manager. You may need to install dependencies manually." + PKG_MANAGER="manual" +fi + +# ── System Dependencies ─────────────────────────────────────── +echo "" +info "Installing system dependencies..." + +if [ "$PKG_MANAGER" = "pacman" ]; then + SUDO="" + if [ "$(id -u)" -ne 0 ]; then + if command -v sudo &>/dev/null; then + SUDO="sudo" + fi + fi + + # Core system packages (python-pyside6 is NOT in official repos — + # we attempt it, then fall back to pip inside the venv below) + $SUDO pacman -Sy --noconfirm --needed \ + python \ + python-pip \ + git \ + tmux \ + ripgrep \ + fd \ + tree-sitter \ + sqlite \ + redis \ + base-devel \ + || warn "Some system packages failed to install (non-critical)" + + # Try python-pyside6 from pacman if available (AUR / community) + if $SUDO pacman -Si python-pyside6 &>/dev/null; then + $SUDO pacman -Sy --noconfirm --needed python-pyside6 \ + || warn "python-pyside6 pacman install failed (will try pip fallback)" + else + warn "python-pyside6 not available in repos — will install via pip" + fi + + info "Core system packages installed." + + echo "" + read -p "Install NVIDIA CUDA support? [y/N] " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + $SUDO pacman -Sy --noconfirm --needed cuda || warn "CUDA install failed" + info "CUDA toolkit installed." + fi + + read -p "Install container runtimes (podman, docker)? [y/N] " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + $SUDO pacman -Sy --noconfirm --needed podman docker || warn "Container runtimes install failed" + info "Container runtimes installed." + fi + + read -p "Install LXC support? [y/N] " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + $SUDO pacman -Sy --noconfirm --needed lxc lxcfs || warn "LXC install failed" + info "LXC support installed." + fi + +elif [ "$PKG_MANAGER" = "apt" ]; then + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends \ + python3 python3-pip python3-venv python3-pyside6.qt6 \ + git tmux ripgrep fd-find sqlite3 redis-server \ + build-essential \ + || warn "Some system packages failed to install" + info "Core system packages installed." + +elif [ "$PKG_MANAGER" = "dnf" ]; then + sudo dnf install -y \ + python3 python3-pip git tmux ripgrep fd-find sqlite redis \ + || warn "Some system packages failed to install" + info "Core system packages installed." +fi + +# ── Python Virtual Environment ───────────────────────────────── +echo "" + +_create_venv() { + if [ "$PKG_MANAGER" = "pacman" ]; then + # Arch: --system-site-packages so venv sees pacman-installed PySide6 + python3 -m venv --system-site-packages "$VENV_DIR" + else + python3 -m venv "$VENV_DIR" + fi + _sys_python_version > "$VENV_PYTHON_STAMP" +} + +if [ ! -d "$VENV_DIR" ]; then + info "Creating Python virtual environment at ${VENV_DIR}..." + _create_venv +else + if _venv_is_stale; then + old_ver="" + if [ -f "$VENV_PYTHON_STAMP" ]; then + old_ver="$(cat "$VENV_PYTHON_STAMP")" + fi + warn "Virtual environment is stale (was Python ${old_ver}, system is now $(_sys_python_version))" + warn "Removing old venv and recreating..." + rm -rf "$VENV_DIR" + _create_venv + info "Virtual environment recreated with Python $(_sys_python_version)" + else + info "Virtual environment already exists and is up-to-date at ${VENV_DIR}" + fi +fi + +info "Activating virtual environment..." +source "$VENV_DIR/bin/activate" + +# ── Verify venv activation (critical on Arch) ─────────────────── +if [ ! -f "${VENV_DIR}/bin/pip" ]; then + error "Virtual environment pip not found at ${VENV_DIR}/bin/pip — venv may be broken. Delete ${VENV_DIR} and re-run." +fi + +VENV_PIP="${VENV_DIR}/bin/pip" + +# ── Python Dependencies (inside venv — safe from EXTERNALLY-MANAGED) ── +echo "" +info "Installing Python dependencies into venv..." + +$VENV_PIP install --upgrade pip setuptools wheel --quiet + +# PySide6 — on Arch this comes from pacman (already installed above). +if [ "$PKG_MANAGER" = "pacman" ]; then + if "${VENV_DIR}/bin/python3" -c "import PySide6" 2>/dev/null; then + info "PySide6 (system) — OK" + else + warn "PySide6 (system) not visible in venv — attempting pip install..." + $VENV_PIP install PySide6 --quiet 2>/dev/null || { + warn "PySide6 installation failed. The app will run in headless mode." + } + fi +else + $VENV_PIP install PySide6 --quiet 2>/dev/null || { + warn "PySide6 installation failed. The app will run in headless mode." + } +fi + +# uv — fast Python package manager +$VENV_PIP install uv --quiet 2>/dev/null || warn "uv installation failed (non-critical)" + +# ── Verify Installation ────────────────────────────────────── +echo "" +info "Verifying installation..." + +ERRORS=0 + +PY_VER="${VENV_DIR}/bin/python3" +PY_VER_STR=$("$PY_VER" -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") +PY_MAJOR=$("$PY_VER" -c "import sys; print(sys.version_info.major)") +PY_MINOR=$("$PY_VER" -c "import sys; print(sys.version_info.minor)") +if [ "$PY_MAJOR" -ge 3 ] && [ "$PY_MINOR" -ge 11 ]; then + info "Python ${PY_VER_STR} (venv) — OK" +else + warn "Python ${PY_VER_STR} (venv) — recommend 3.11+" +fi + +if "$PY_VER" -c "import PySide6" 2>/dev/null; then + info "PySide6 — OK" +else + warn "PySide6 — NOT FOUND (UI will be unavailable)" + ERRORS=$((ERRORS + 1)) +fi + +# Check registry loads (pass AI_LSC_BASE_DIR so it resolves correctly) +cd "$SCRIPT_DIR" +if AI_LSC_BASE_DIR="$AI_BASE" "$PY_VER" -c " +import sys +sys.path.insert(0, 'src') +from ai_lsc.registry.loader import load_merged_registry +reg = load_merged_registry() +print(f' Registry: {len(reg)} tools loaded') +" 2>/dev/null; then + info "Registry — OK" +else + warn "Registry — could not load (check file structure)" + ERRORS=$((ERRORS + 1)) +fi + +for cmd in ollama podman docker tmux ripgrep fd tree-sitter; do + if command -v "$cmd" &>/dev/null; then + info "${cmd} — found" + else + warn "${cmd} — not found (optional)" + fi +done + +# ── Summary ─────────────────────────────────────────────────── +echo "" +if [ "$ERRORS" -eq 0 ]; then + echo -e "${GREEN}${BOLD}Bootstrap complete! AI Local Stack Control is ready.${NC}" + echo "" + echo -e " ${CYAN}Base dir: ${AI_BASE}${NC}" + echo "" + echo " Launch the application:" + echo " cd ${SCRIPT_DIR}" + echo " python ai_lsc.py" + echo "" + echo " Or use the convenience launcher:" + echo " bash run.sh" + echo "" +else + echo -e "${YELLOW}Bootstrap complete with ${ERRORS} warning(s).${NC}" + echo "The application may run in limited mode. Review warnings above." +fi + +# ── Write env file so run.sh and ai_lsc.py can pick it up ──── +cat > "${SCRIPT_DIR}/.env" < *This is the single architectural definition for AI-LSC. Every module, every +> template, every resolver path either implements something defined here or it +> does not belong.* + +--- + +## Status + +**Accepted.** Adopted as the foundational architecture for v3.0 (Ankh of Jah) +and all subsequent releases. The agentic execution layer is deferred to v4.0. + +--- + +## 1. Context + +AI-LSC did not begin as an architecture. It began as a question: + +> "Can I stop manually juggling a dozen AI tools on a Linux machine?" + +v1 answered: *yes, with a monolithic script.* +v2 answered: *yes, with a modular registry and layers.* +v3 answers a different question entirely: + +> "Can a system *understand* AI infrastructure well enough to deploy, +> validate, diagnose, and reproduce it — without the operator thinking +> about individual tools?" + +The shift is from tool-first to system-first. Earlier development asked +"how do we add support for X?" Current development asks "where does X belong +in the architecture?" That is not a cosmetic change. It is a phase change. + +Three releases revealed a consistent pattern: the same architectural verbs +kept reappearing across unrelated features. Install, verify, configure, +launch, monitor, export, diagnose, reproduce. Every tool needed them. Every +stack needed them. Every container needed them. The repetition was not a +failure to abstract — it was evidence of an abstraction waiting to be named. + +This document names it. + +--- + +## 2. The Foundational Object: Capability + +Every system has one concept that, if removed, causes the entire structure to +collapse. For AI-LSC, that concept is **Capability**. + +A Capability is a named, validated unit of infrastructure that a machine either +possesses or does not. It is not a tool. It is not a process. It is not a +package. It is a *statement about the machine*. + +``` +"Inference" — this machine can run LLM inference. +"Vector Store" — this machine can store and query embeddings. +"Monitoring" — this machine can observe its own services. +"GPU Compute" — this machine has CUDA/cuDNN available. +``` + +Capabilities are discovered, not declared. A tool *provides* capabilities. A +template *requires* capabilities. A pipeline *consumes* capabilities. A +container *exports* capabilities. A dashboard *reports* capabilities. A skill +*extends* capabilities. Monitoring *validates* capabilities. + +Every subsystem points at Capability. No subsystem points at Tool directly +except the Registry, which maps tools to the capabilities they provide. + +This single inversion eliminates most of the coupling in the application: + +``` +Tool ──provides──► Capability ◄──requires── Template + ▲ +Pipeline ──consumes──────┘ + ▲ +Container ──exports───────┘ + ▲ +Dashboard ──reports───────┘ + ▲ +Skill ──extends───────┘ + ▲ +Monitoring ──validates─────┘ +``` + +Swap Ollama for vLLM. Swap Grafana for another observability stack. Swap +Qdrant for Milvus. Everything above the Registry layer does not notice. +The capability model remains stable even when implementations evolve, +technologies are replaced, or entirely new categories of AI software emerge. + +--- + +## 3. The Architecture Pipeline + +AI-LSC is not an installer. It is a pipeline from intent to infrastructure. + +``` +┌──────────────────────────────────────────────────────────────────┐ +│ USER INTENT │ +│ │ +│ "I want a Research Workstation" │ +│ "I want a RAG Server" │ +│ "I want a GPU Inference Cluster" │ +│ "I want a Coding Assistant" │ +└────────────────────────┬─────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────┐ +│ TEMPLATE (Recipe) │ +│ Desired Architecture │ +│ │ +│ Research Workstation │ RAG Appliance │ Inference Node │ +└────────────────────────┬─────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────┐ +│ RESOLVER │ +│ Infrastructure Planning │ +│ │ +│ • Detect hardware • Detect OS │ +│ • Detect installed sw • Detect conflicts │ +│ • Expand dependencies • Select implementations │ +│ • Produce execution plan │ +└────────────────────────┬─────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────┐ +│ REGISTRY │ +│ Individual Components │ +│ │ +│ Every tool knows: Install · Update · Verify · Launch │ +│ Health · Configure · Container · Export │ +└────────────────────────┬─────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────────┐ +│ RUNTIME │ +│ │ +│ Native · Podman · Docker · LXC · Cluster · Remote │ +└──────────────────────────────────────────────────────────────────┘ +``` + +The Resolver is the brain. It is the only component that translates between +the declarative world of templates and the imperative world of package +managers, container runtimes, and service launchers. No other component +performs this translation. This constraint ensures that adding a new runtime +target (say, Kubernetes) requires changes only in the Registry (new tool +entries) and Runtime (new executor), never in templates or pipelines. + +--- + +## 4. Stack Recipes (Templates as Intent) + +### 4.1 What a Template Is + +A template is infrastructure intent, not an install script. It declares what +the operator wants the machine to become. It does not duplicate install +logic, configuration logic, or launch logic — the Registry already owns all +of that. + +The current template format is a flat list of tool IDs. This is functional +but insufficient for the capability architecture. The evolved format — the +**Stack Recipe** — declares capabilities, roles, connections, and startup +semantics: + +```yaml +# Stack Recipe — evolved template format (v4.0 target) +stack: + name: Claude Memory Assistant + version: "1.0" + maturity: official # official | community | local | frozen + +capabilities: + required: + - inference # needs an LLM engine + - vector_database # needs embedding storage + - relational_database # needs structured storage + - web_interface # needs a browser-accessible UI + optional: + - monitoring + - automation + +components: + inference: + engine: ollama + model: llama3 + memory: + vectordb: qdrant + embedding_model: nomic-embed-text + database: + engine: postgres + ui: + provider: open_webui + +connections: + - from: inference + to: vector_database + protocol: embedding + - from: inference + to: relational_database + protocol: session_store + - from: ui + to: inference + protocol: openai_compat + +startup: + order: + 1. relational_database + 2. vector_database + 3. inference + 4. ui + health_wait: + - relational_database # UI waits until DB is accepting connections + - vector_database + - inference + +health: + checks: + - capability: inference + probe: GET /api/tags + - capability: vector_database + probe: GET /collections +``` + +### 4.2 What a Template Is Not + +A template does not contain: + +- Installation commands (the Registry knows how to install) +- File paths (the Resolver knows the layout) +- Port assignments (conflict detection is automatic) +- OS-specific logic (the Resolver handles this) +- Dependency installation order beyond what `startup.order` declares + +A template also does not hardcode implementations. It specifies roles: + +```yaml +components: + vector_database: + role: vector_store # NOT "qdrant" +``` + +The Resolver maps `vector_store` to whatever provider is installed or +available. On one machine that is Qdrant. On another it is Milvus. On a +third the Resolver recommends Chroma. The template never changes. + +### 4.3 Template Maturity + +Templates have a maturity level that signals trust and intent: + +| Level | Meaning | Use Case | +|-------|---------|----------| +| **Official** | Maintained by the AI-LSC project | Curated reference stacks | +| **Community** | Shared by users, reviewed | Experimentation, collaboration | +| **Local** | Created by the operator | Personal workflows, one-off stacks | +| **Frozen** | Exact snapshot of a validated environment | Reproducibility, CI/CD, audit | + +A Frozen template pins every version, every config hash, every capability +signature. Deploying a Frozen template on a different machine produces a +bit-for-bit equivalent environment. This is the mechanism for long-term +reproducibility — not containerization alone, but declarative infrastructure +with verified provenance. + +--- + +## 5. Role-Based Resolution + +The critical distinction between AI-LSC and every other "AI launcher" is +that templates specify **roles**, not implementations. + +A role is a capability category with multiple possible providers: + +``` +Role: Inference Engine + Providers: Ollama · llama.cpp · vLLM · TensorRT-LLM · LM Studio + +Role: Vector Database + Providers: Qdrant · Chroma · Milvus · Weaviate · FAISS + +Role: LLM Gateway + Providers: LiteLLM · OpenRouter · Local proxy + +Role: Monitoring + Providers: Grafana + Prometheus · Glances · Netdata + +Role: Agent Frontend + Providers: Open WebUI · LibreChat · AnythingLLM · Continue +``` + +The Resolver performs role resolution in this order: + +1. **Already installed?** Use what is present. +2. **Compatible with hardware?** Select the best fit (GPU → CUDA-aware provider). +3. **Template preference?** Honor explicit provider hints. +4. **Fallback chain.** Try each candidate in order. +5. **Recommend.** If nothing installs cleanly, report what is needed. + +This means a single template shared between two machines can resolve to +completely different toolsets: + +``` +"Research Workstation" template + +Laptop (CPU-only): + → llama.cpp (CPU inference) + → LiteLLM (gateway) + → Chroma (lightweight vector store) + → Open WebUI (interface) + +Desktop (RTX 4090): + → Ollama (CUDA inference) + → vLLM (high-throughput serving) + → Qdrant (production vector store) + → LibreChat (multi-provider interface) +``` + +Same template. Different reality. The Resolver is what makes that work. + +--- + +## 6. Component Connections + +Installing tools side-by-side is not an architecture. Understanding how they +interact is. + +The Stack Recipe format includes a `connections` section that declares +relationships between components. These are not just documentation — they are +inputs to the Stack Doctor (Section 12) and the Resolver's validation +engine. + +A connection declaration: + +```yaml +connections: + - from: ui # Open WebUI + to: inference # Ollama + protocol: openai_compat # Expects OpenAI-compatible API + - from: ui + to: vector_database + protocol: embedding # Needs embedding endpoint +``` + +The Resolver uses connections to: + +- Validate that protocols are compatible (OpenAI-compat ↔ OpenAI-compat). +- Detect likely misconfigurations (OLLAMA_HOST=localhost when UI is remote). +- Generate connection-specific health checks. +- Produce diagnostic suggestions when connections fail. + +This is dependency injection for infrastructure. The template declares the +graph. The Resolver validates the graph. The Runtime instantiates the graph. + +--- + +## 7. The 13-Layer Model + +AI-LSC organizes all AI infrastructure into 13 layers. Each layer represents +a category of capability. Tools register into one (sometimes two) layers. +Templates reference layers instead of individual tools when expressing +broad requirements. + +``` +Layer 1 Host Platform — OS, kernel, filesystem, base packages +Layer 2 Development Env — Python, Rust, Node.js, Go, build tools +Layer 3 GPU Runtime — CUDA, cuDNN, ROCm, Vulkan compute +Layer 4 Inference Engines — Ollama, llama.cpp, vLLM, TensorRT-LLM +Layer 5 Distributed Runtime — Ray, Kubeflow, cluster schedulers +Layer 6 AI Endpoints — LiteLLM, model routers, API gateways +Layer 7 Data & Knowledge — PostgreSQL, MariaDB, data pipelines +Layer 8 Knowledge Management — Qdrant, Chroma, Milvus, vector stores +Layer 9 Automation & Execution — n8n, Airflow, task schedulers +Layer 10 Observability — Prometheus, Grafana, Glances, logging +Layer 11 Intelligent Routing — Fabric, Hermes, agent dispatchers +Layer 12 User Interfaces — Open WebUI, LibreChat, AnythingLLM +Layer 13 Containers — Podman, Docker, LXC, export targets +``` + +A template can express requirements by layer: + +```yaml +capabilities: + layers: + - Inference Engines # Layer 4 + - AI Endpoints # Layer 6 + - Knowledge Management # Layer 8 + - User Interfaces # Layer 12 +``` + +The Resolver fills in everything else. If the template needs inference +(Layer 4) and the host has no GPU (Layer 3), the Resolver knows to +recommend CPU-only providers and skip CUDA-dependent tools automatically. + +### Stress Test + +The 13-layer model must accommodate any AI project without forcing it. A +non-exhaustive validation set: + +| Project | Natural Layer Fit | +|---------|-------------------| +| Open WebUI | 12 (User Interfaces) | +| LiteLLM | 6 (AI Endpoints) | +| Qdrant | 8 (Knowledge Management) | +| Ollama | 4 (Inference Engines) | +| vLLM | 4 (Inference Engines) | +| ComfyUI | 12 (User Interfaces) | +| Flowise | 12 (User Interfaces) | +| n8n | 9 (Automation & Execution) | +| Prometheus | 10 (Observability) | +| Ray | 5 (Distributed Runtime) | +| Langflow | 12 (User Interfaces) | +| Chroma | 8 (Knowledge Management) | +| Milvus | 8 (Knowledge Management) | +| llama.cpp | 4 (Inference Engines) | +| TensorRT-LLM | 4 (Inference Engines) | +| OpenHands | 12 (User Interfaces) | +| Aider | 2 (Development Env) | +| Continue | 2 (Development Env) | +| Kubeflow | 5 (Distributed Runtime) | +| Kafka | 7 (Data & Knowledge) | + +Every project in the validation set fits naturally into exactly one layer. +None require special casing. The model appears to generalize well. + +--- + +## 8. Skills as Derived Capabilities + +Skills are not file lookups. They are capability queries. + +The old model: "Does this Python file exist in the skills directory?" +The new model: "Does this machine currently possess this capability?" + +Skills derive from deployed, validated infrastructure: + +``` +Template: Research Workstation + │ + ▼ Deployed + │ + ▼ Verified + │ + ▼ Registered as Capabilities + │ + ▼ Skills become available: + │ + ├── "Local RAG" (has: inference + vector_store + ui) + ├── "Python AI" (has: development + inference) + ├── "Vision" (has: inference + multimodal_model) + ├── "Speech" (has: inference + whisper + tts) + └── "Distributed Inference" (has: inference + distributed_runtime) +``` + +A skill definition references capabilities, not tools: + +```yaml +skill: + name: Local RAG + requires: + capabilities: [inference, vector_database, web_interface] + optional: + capabilities: [monitoring, relational_database] + description: > + End-to-end retrieval-augmented generation using local models. + Available when the machine has an inference engine, a vector store, + and a web interface — regardless of which specific tools provide them. +``` + +This means installing a new tool that provides an existing capability can +silently unlock skills the operator never explicitly configured. Replace +Qdrant with Milvus and every RAG skill still works, because the capability +did not change — only the provider did. + +--- + +## 9. Pipelines Consume Capabilities + +A pipeline is a directed graph of capability requirements. It never names a +tool. It names what it needs: + +``` +Pipeline: Document RAG + + [Source] → [Chunking] → [Embedding] → [Vector Store] → [Retriever] → [LLM] → [Output] +``` + +Each node is a capability. The Resolver maps each node to a tool at runtime: + +``` +Embedding: + → nomic-embed-text (via Ollama) + or + → bge-small (via llama.cpp) + +Vector Store: + → Qdrant + or + → Chroma + +LLM: + → Ollama (llama3) + or + → vLLM (deepseek-coder-33b) +``` + +The pipeline graph never changes when implementations change. This is what +makes pipelines portable across machines, containers, and clusters. + +--- + +## 10. Container Export as Capability Export + +A container image is not a bag of tools. It is a frozen capability set. + +When an operator exports a Research Workstation to Podman, the exported +image carries a capability manifest alongside the filesystem layers: + +``` +Research_Workstation_v1.0 + + Capabilities: + ✓ Inference (Ollama, llama3) + ✓ GPU Compute (CUDA 12.4, cuDNN 9.1) + ✓ Vector Database (Qdrant) + ✓ LLM Gateway (LiteLLM) + ✓ Web Interface (Open WebUI) + ✓ Monitoring (Prometheus + Grafana) + ✓ Relational Database (PostgreSQL) + + Stack Recipe: embedded (frozen) + Template: Research Workstation v1.0 + Exported: 2026-06-28 + Architecture: x86_64 +``` + +When another machine imports this image, AI-LSC reads the manifest and +immediately knows what the container provides — no scanning, no probing, no +guessing. The capabilities are declared, trusted, and verified. + +Export targets are format-agnostic: + +``` +Recipe → Resolver → Generate Deployment + ├── Podman Quadlet + ├── Docker Compose + ├── LXC Config + └── Kubernetes YAML (future) +``` + +The recipe never changes. Only the exporter changes. + +--- + +## 11. Dashboards Report Capability Health + +The dashboard does not display process status. It displays infrastructure +health. + +``` +┌──────────────────────────────────────────────────────┐ +│ Research Workstation ████████ 92%│ +│ │ +│ Host Platform ✓ │ +│ Development Env ✓ │ +│ GPU Runtime ⚠ CUDA Update Available │ +│ Inference Engines ✓ Ollama · llama3 │ +│ AI Endpoints ✓ LiteLLM :4000 │ +│ Data & Knowledge ✓ PostgreSQL :5432 │ +│ Knowledge Management ✓ Qdrant :6333 │ +│ Automation — │ +│ Observability ✓ Grafana · Prometheus │ +│ Intelligent Routing ✓ Fabric │ +│ User Interfaces ✓ Open WebUI :8080 │ +│ Containers 2 specialist images │ +│ │ +│ Templates: 7 installed Skills: 12 available │ +└──────────────────────────────────────────────────────┘ +``` + +Each row is a capability, not a tool. The status reflects whether the +machine possesses that capability in a healthy state, regardless of which +tool provides it. If the operator swaps Grafana for Netdata, the +Observability row still shows the same status — because the capability +did not change. + +--- + +## 12. Stack Doctor + +The Stack Doctor is a reasoning engine, not a log viewer. It understands +relationships between components and can diagnose problems that span multiple +tools. + +Example diagnosis: + +``` +DIAGNOSIS: Open WebUI cannot reach Ollama + +REASON: OLLAMA_HOST is set to localhost (127.0.0.1) + but Open WebUI is configured to connect to port 11434 + on all interfaces. Connection is refused. + +RECOMMENDATION: + Option A: Set OLLAMA_HOST=0.0.0.0 in Ollama environment + Option B: Bind Open WebUI to localhost only + Option C: Route through LiteLLM proxy +``` + +Example conflict detection: + +``` +DIAGNOSIS: Port conflict detected + + LiteLLM wants port 4000 ✓ (available) + vLLM wants port 8000 ✗ (occupied by TensorRT-LLM) + +RECOMMENDATION: + Move LiteLLM to port 4001 + or + Disable TensorRT-LLM if not needed +``` + +The Stack Doctor uses the connection graph from the Stack Recipe to trace +problems across component boundaries. It does not just check if a process is +running — it checks if the *capability chain* is intact from end to end. + +--- + +## 13. Operator Workflows + +### 13.1 Missions + +Complex deployments are presented as **Missions**, not wizards. A Mission +is a named, scoped objective with a clear completion state: + +``` +┌──────────────────────────────────────────────────────┐ +│ MISSION: Build Coding Assistant │ +│ │ +│ Estimated effort: 8 minutes │ +│ Status: Planning... │ +│ │ +│ [✓] Validate host platform │ +│ [✓] Detect installed capabilities │ +│ [→] Resolve missing dependencies │ +│ [ ] Install Python (Layer 2) │ +│ [ ] Install Ollama (Layer 4) │ +│ [ ] Install LiteLLM (Layer 6) │ +│ [ ] Install Open WebUI (Layer 12) │ +│ [ ] Configure connections │ +│ [ ] Verify health │ +│ [ ] Export ready │ +└──────────────────────────────────────────────────────┘ +``` + +### 13.2 Routines + +Routines are reusable infrastructure actions, not application macros: + +| Routine | Actions | +|---------|---------| +| **Morning Check** | Verify all services, restart unhealthy, check updates, check GPU, check disk | +| **Pre-Inference** | GPU memory, temperature, ports, models, KV cache, endpoint ready | +| **Before Export** | Verify services, verify configs, clean logs, freeze versions, generate manifest | +| **Before Commit** | Lint, test, validate registry, validate templates, schema check | + +One button. Comprehensive validation. + +### 13.3 Next Best Action + +AI-LSC suggests the operator's next step based on current state: + +``` +Good morning. + ✓ GPU healthy + ✓ Ollama healthy + ⚠ Open WebUI update available (v0.3.12 → v0.3.14) + ⚠ Research Workstation template has 1 missing dependency + +Suggested: Verify Research Workstation +``` + +This is not AI. It is deterministic inference over the capability graph. +The system knows what is installed, what is healthy, what is outdated, and +what templates require. The recommendation follows directly. + +### 13.4 Activity Timeline + +Every infrastructure action is recorded with a timestamp: + +``` +09:13 Installed LiteLLM +09:15 Verified CUDA (driver 550.54, CUDA 12.4) +09:16 Generated template: Research Workstation +09:20 Exported Podman image: research_ws_v1.0 +09:27 Health check passed (13/13 capabilities) +``` + +Timelines are queryable, filterable, and exportable. They provide audit +trail and operational memory. + +### 13.5 Workspaces + +Workspaces group related infrastructure by purpose, not by tool: + +``` +Research → inference + vector_db + ui + monitoring +Coding → development + inference + endpoints + ui +RAG → inference + vector_db + relational_db + ui +Cluster → distributed + inference + monitoring + containers +``` + +Click a workspace. Everything related appears. One context for one purpose. + +--- + +## 14. Adaptive Templates + +A single template adapts to the host hardware, installed software, and +available runtimes. The Resolver selects implementations based on +constraints, not preferences. + +``` +"Research Workstation" on different hardware: + +Laptop (CPU, 16GB RAM): + → llama.cpp (quantized, CPU inference) + → Chroma (in-process vector store, minimal memory) + → LiteLLM (lightweight gateway) + → Glances (lightweight monitoring) + → Open WebUI (browser interface) + +Desktop (RTX 4090, 64GB RAM): + → Ollama (CUDA-accelerated inference) + → Qdrant (production vector store with GPU-accelerated HNSW) + → LiteLLM + vLLM (dual gateway: fast + thorough) + → Prometheus + Grafana (full monitoring stack) + → LibreChat (multi-provider interface) + +Server (Dual MI300X, 256GB RAM): + → SGLang (ROCm-optimized inference) + → Milvus (distributed vector store) + → LiteLLM (cluster gateway) + → Prometheus + Grafana + AlertManager (production monitoring) + → Open WebUI (load-balanced) +``` + +Same template. Same intent. Different reality. The Resolver is what makes +the template portable. + +--- + +## 15. Rationale + +### Why Capability as the central abstraction? + +Because tools are ephemeral. The AI landscape changes monthly. New inference +engines appear. Old ones are abandoned. Monitoring stacks get replaced. +Vector databases get acquired and deprecated. + +But the *capabilities* those tools provide are remarkably stable. "The +machine can run LLM inference" has been true since 2023 and will be true +in 2030. The implementation changes. The capability does not. + +Building around capabilities means AI-LSC's architecture decays at the +rate of the AI industry's *conceptual* evolution, not its *tool* churn. +Conceptual evolution is orders of magnitude slower. + +### Why not just use Terraform / Kubernetes? + +Because those tools solve a different problem. Terraform manages cloud +infrastructure declaratively. Kubernetes orchestrates containers at scale. +Neither understands that "install Qdrant" implies "the machine now has +vector database capability" — nor should they. That is AI-LSC's domain. + +AI-LSC is specifically designed for the local AI operator who needs to +assemble, validate, and reproduce AI stacks on single machines or small +clusters. It fills the gap between "install scripts" and "cloud +orchestration." + +### Why role-based resolution instead of tool-specific templates? + +Because a template that hardcodes Qdrant cannot run on a machine that only +has Milvus. A template that hardcodes Ollama cannot leverage an existing +vLLM installation. Role-based resolution makes templates portable, +shareable, and future-proof without requiring the template author to +anticipate every possible provider. + +--- + +## 16. Consequences + +### Positive + +- **Tool swaps are zero-cost above the Registry.** Replacing a provider + requires only a new Registry entry with the same capability mapping. + Templates, pipelines, skills, and dashboards are unaffected. +- **Templates are shareable across heterogeneous hardware.** The same + recipe produces appropriate deployments on laptops, desktops, and + servers. +- **New capabilities can be added without modifying existing templates.** + Adding a "Speech-to-Text" capability does not require touching any + Research Workstation template. +- **Container exports carry semantic meaning**, not just filesystem + state. Importing a container immediately reveals its capabilities. +- **Diagnostics can reason about relationships**, not just individual + process health. + +### Neutral + +- **The Resolver is the most complex component.** It must understand + hardware detection, OS differences, dependency graphs, conflict + resolution, and provider selection. This is acceptable because the + Resolver is a single, well-bounded component. +- **The capability vocabulary must be curated.** New capabilities require + consensus on naming, boundaries, and provider criteria. This is a + governance concern, not a technical one. + +### Risks + +- **Over-abstraction.** If the capability vocabulary is too coarse + ("compute"), it loses discriminating power. If too fine ("qdrant-hnsw- + gpu"), it reverts to tool-specific coupling. The granularity must be + calibrated through real-world use. +- **Resolver complexity.** A naive Resolver that tries all combinations + is NP-hard. The Resolver must use heuristics, caching, and constraint + propagation to remain fast. +- **Capability drift.** As the AI ecosystem evolves, capabilities may + split or merge. "Inference" might split into "Text Inference" and + "Multimodal Inference." The architecture must handle capability + evolution without breaking existing templates. + +--- + +## 17. Architecture Completeness + +Current state of implementation (v3.0 Ankh of Jah): + +``` +Registry (tool metadata, 115 tools) ████████████░ 95% +Templates (stack recipes, 4 templates) ██████░░░░░░ 55% +Resolver (dependency expansion, planning) ███░░░░░░░░░ 30% +Installer (native, git, npm, pip) ████████████░ 95% +Verification (install checks, health probes) ██████████░░░ 85% +Health (service status, GPU monitoring) ███████░░░░░ 65% +Export (Podman, Docker, LXC configs) ████████░░░░ 80% +Monitoring (glances integration, Prometheus) █████░░░░░░░ 50% +Skills (capability-derived skills) ███░░░░░░░░░ 25% +Pipelines (capability graph execution) ██░░░░░░░░░░ 20% +Dashboards (capability health display) ████░░░░░░░░ 35% +Stack Doctor (diagnostic reasoning) ██░░░░░░░░░░ 15% +Missions (guided deployment flows) █░░░░░░░░░░░ 10% +Workspaces (purpose-based grouping) ███░░░░░░░░░ 25% +Activity Timeline ██░░░░░░░░░░ 20% +Next Best Action █░░░░░░░░░░░ 10% +Documentation (this ADR, README, guides) ██████░░░░░░ 55% +Tests ██░░░░░░░░░░ 20% +``` + +The pattern is clear: the foundation (Registry, Installer, Verification) is +strong. The intelligence layer (Resolver, Stack Doctor, Missions) is where +the next investment goes. The UI layer (Dashboards, Workspaces, Timeline) +follows the intelligence layer. + +--- + +## 18. Feature Policy (Ankh of Jah Stabilization) + +v3.0 enters a stabilization phase. Feature velocity decreases; stability +velocity increases. + +### Allowed + +- Bug fixes +- Registry additions (new tool metadata, new providers) +- New templates (stack recipes) +- Installer verification and hardening +- UI polish and usability improvements +- Documentation +- Tests +- Capability vocabulary refinement +- Resolver heuristic improvements + +### Not Allowed + +- New architectural concepts +- New runtime systems +- Major UI redesigns +- New registry formats (schema changes) +- Agent execution (deferred to v4.0) +- Cluster orchestration (deferred to v4.0) +- Remote node management (deferred to v4.0) + +### v4.0 Scope (Deferred) + +The agentic execution layer — where an LLM operates AI-LSC through +function-calling, using the agents/ bridge to start/stop services, pull +models, inject skills, and diagnose issues through natural language. This +is architecturally designed (agents/ package exists, tool_bridge and +ollama_tools are implemented, Redis pub/sub infrastructure is in place) +but intentionally not activated in v3.0. + +--- + +## 19. Project Philosophy + +AI-LSC is a native-first, metadata-driven infrastructure manager for local +AI systems. It treats AI software as reusable infrastructure rather than +isolated applications, enabling reproducible deployments, validation, +monitoring, and export of complete AI environments. + +This single paragraph is the decision filter for every proposed feature. +If a feature supports this philosophy — making AI infrastructure easier to +deploy, validate, reproduce, and understand — it belongs. If it does not, +it does not. + +AI-LSC's biggest competitor is not another AI launcher. It is the manual +process that most developers still follow: reading installation guides, +cloning repositories, creating Python environments, debugging version +conflicts, writing ad hoc shell scripts, and hoping they can recreate the +setup six months later. + +If AI-LSC can replace that with: select a template, review the execution +plan, deploy, verify, export — then it has solved a real engineering +problem. + +--- + +## 20. The Architectural Vocabulary + +These terms are stable. They will not change in v3.0 patches. They may +evolve in v4.0, but only with explicit ADR amendment. + +| Term | Definition | +|------|-----------| +| **Capability** | A named, validated unit of infrastructure that a machine possesses or does not. The central abstraction. | +| **Template / Stack Recipe** | A declarative document expressing infrastructure intent. Specifies capabilities and roles, not tools. | +| **Resolver** | The planning engine that maps intent to execution. Detects hardware, resolves roles, expands dependencies, produces plans. | +| **Registry** | The knowledge base of individual tools. Each entry maps a tool to its capabilities, installers, launchers, health probes, and exporters. | +| **Role** | A capability category with multiple possible providers (e.g., "Vector Database" → Qdrant, Chroma, Milvus). | +| **Skill** | A capability-derived behavior. Available when all required capabilities are present and healthy. | +| **Pipeline** | A directed graph of capability requirements. Consumes capabilities; does not name tools. | +| **Connection** | A declared relationship between two components in a Stack Recipe. Used for validation and diagnostics. | +| **Stack Doctor** | A diagnostic reasoning engine that traces problems across component boundaries using the connection graph. | +| **Mission** | A named, scoped deployment objective with a clear completion state. | +| **Routine** | A reusable infrastructure action (health check, pre-flight, cleanup). | +| **Workspace** | A purpose-based grouping of related infrastructure. | +| **Frozen** | An exact snapshot of a validated environment, pinned at every version. | +| **Layer** | One of 13 categories of AI infrastructure. Tools register into layers. Templates can reference layers. | +| **Runtime** | The execution target: native, Podman, Docker, LXC, cluster, or remote. | + +--- + +*Ankh of Jah marks the point where AI-LSC stopped being a Python application +and became a platform architecture. Future releases build on this foundation. +They do not revisit it.* diff --git a/docs/screenshots/chat-console.png b/docs/screenshots/chat-console.png new file mode 100644 index 0000000000000000000000000000000000000000..a2957a9acdf3f83b738aed0852e6fefc4db6f8fb GIT binary patch literal 56347 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 z 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

ohY1YB!j54cPT_0IHS$PXMjqima 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/infrastructure-layers.png b/docs/screenshots/infrastructure-layers.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e4bbbf05d92a9cb4827657a5a56671f072b376 GIT binary patch literal 68518 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 JduI6Ie*si|QoaBH literal 0 HcmV?d00001 diff --git a/docs/screenshots/ipc-stack-editor.png b/docs/screenshots/ipc-stack-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3b453235a0dd1dad16d0cc50e36ce9202373ab GIT binary patch literal 71708 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 RU-Ymh=PiCKI(PNXe*)z literal 0 HcmV?d00001 diff --git a/docs/screenshots/overview.png b/docs/screenshots/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..c65959f22ef8d8c9cec93645b0002030df2a6630 GIT binary patch literal 79921 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 RU-Ymh=PiCKI(PNXe*)z literal 0 HcmV?d00001 diff --git a/docs/screenshots/settings.png b/docs/screenshots/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..84377915bc073e2d488ac9e6e0345fa3e3c4fbde GIT binary patch literal 53351 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ℑD3}Gxye?ay<`_FJ@|L8dX{T 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 %9)Nhqor`=60P;HQRsut1 z>*}m0i?N9C>fK=bj47-~i{M5TO1eR(8$|SRmcZJIh2z2Ki?82bfZY$0nLWaZ#Kpw` zm^kvpS`bq{k)F?M@xw3N$6*ToFG!5A%X8gkFZA??^54idGY<3yg$lLM=+hHHV&}Cx zJ_E9)JV;~-##Vx4Go=$p~8Kp-4`D}`Dmd|N$mk7zA0gP z8v|5Deb_3xL ztk%;N(H9~tEciwIhJM^$Xyfw$1@`8Ojm@c!Dlrcvuk!VGOa|{gV*SQhB7Kk3f>Qpj z$yUeKcJLRUv*u0*|7BvE&sm;VbUI-Ls6$v76?mptD`H>njc=S>hyVsY9Z2n>Nx4hY z8?P&}1PpI))|S#HI;3;8P35`7G^cxK;o}97CSC-I1(UTFO8N6f;>~U)3f9I}d+Ylg z_Luaw=8u8T#*72cYIlap^eUIvf?ojJWx7dL{p_`Wntte=QLYI@lhHpaHgaGdjfr#! znmAKwaBI9K21|a6gh|9B$U#L~@_~Z`dm+RSX$r%3C3hpx*L$VIKTIh)#w2q9#!o z(#6EDVDU|~v`%__U}LG5H}(DTQtgYZ?3XROXWiKn7M5SWys=*0ZzBYFB}k}7v9{Gi zr(|*4g20C#2W#ukB{lUoJijHe7&f3WE>+nt0W5x%TKB50d)91f>C~xFpdtxxDb#|$ z+d?@93wP(sGts%+)m`nEZG>s#V19{XUDy3jt2YxxVl0-6Zw?3J^QEap(hYj{8gh2AbUO(`cmaNkQ@-Xjm~(K>H=+nh><4_e~I85NaPOv zTkk~H$J_M>5A7nwocJQBsWcHW5#`GIr(FA3OCf+uLF2U_@1BFufb*FQZv%n^uh>vZ zHLqDTOS!HnuioLOW+nph-3+EErS!0UaQ0Vuq>SUohC(+Ebv<~Ko6%@X^O+CRaoV_` zCzecdjf||R(SA{42bcdP*RgW5)5MpLj<{^U_!HAGs@vOz`Jc9yfuuKVrb|Q4cFFs1 zc7Jd_&Ef#NAK^NQZiIfz(gBpB;4cq%ot_u?y*vM8=Fg?cj{~JY@o;lT$Hqz%p|41& zhV{rG?~RVCOmTS-tn_s|IINzW#J)!?f!&>JeFn`weF``!DP;|*uCAv4XqJvPCGv}_ zvhf`IUg*t!_o}st^?035twW&#I}f|)w$)UNVust1$~}&QRxIcs`COg$wWwoYOJ1yP z-}y@ARzrQg_)@(c_=?c)b{pL(W_^N^fF)BTtj4V?G`ip0%YLOr(^WJgDQW#8D1p_l zn|+!mO+=Kh?i~($%fkFzX>476BTizD;u#J9d^dT^k53Tahi&}r2DdB1(^3`DHfnLw zk24vm%NLVqTW&gQMksf+!E05cDnBhrGFJ5PuzxjuTn#=q5Pufj%A&6#V4b(R`hyhT z?_p8r-52CxAlB@5G`Xw=LCs3ZrdzoURTjVIymQl+l9XCE(slg6PfKiU*n37#P3TYh zyP8pResol(cNtI~NXL>=(&NIC zBTf0Ea&?9~0x2F)lj|+aYLx2JP*FY2qSm2PC(EkrxPg8&qVT2AAz;Mfa-p$Yj02Fm za=lyUllJ>D(z}6w-^RYafG3tRp8?5H2n7Lt1 z=l#Y>QBkqiD|yhE6%iIAd~8yx7|{fYKVODQHPfbp*kVf^Zk5Q!jNHyTZ&1)l!Z)a? z@unV3rDOHMPMW0o?}sC!qN1HGWodzuS#tiDdeL#Rkw0EeR~XZLas2w)GT_q@O&_VL zQBfmPQwh(O(`Hj=t5hU6urMGQWs>XCdWEf)f|WyW5>pHp78deZqCZFK@|rYz7z9gs z8Z@2u5(?ZcitX=;w$?5y`T2QID8R)s5%@C%!|i<9!*HJNIBc* z;gHC0Q9kiw0-ypJ_aINcIDI2*;2Ee$$l>E5;n6)o7kf57zP|y{F?kGH}~*{fW$xmgVfHWic^r!S?{T8y0(K4RxPDKEuF>j4gBf;?m2X4@LiTvcluA-0Ukb ztzGMOWWVI?a<~}sPcQoGh{a{un3I*_+O-34dAXej{3K?&t;;>aRRJ2gvqynS5myO~!t$q8NPkCf%BG}? z+owLE#;8&J?LAcxx-bJhpLzNH)~8SowvBu(6-JI2&7-W@YA)it}yr{Nd`T6^4MS9Mwh}LCZI#~ zn6Fi@MuPzmuS^w*_+7pf+W_TD^E!+9|(8|PU zk%n;w2JR&&aT>) z;#Q~I?IDtVYCyCFK%K-{mVml#tk6z?>GZrHlF3n|4W%Q2Juo@h`GImCyl)uccUz+$^Qcp|q)M0`#^x!DbGEo&9| zO?FebXl=8#d6eT#6L4R`p{%2zv0L}H!-ecSkuSrUblHr2q&|T$$S{sUm*JN8 zj#I?E$YF=0fx*$~T-gAvl^(rZTrcuS0Y-Pphexx^C-p$2@i;YcXFWUx&Ax8+O*}rFUoKV#`8d2 ze|rA!t27?0v;+T(f;kxfe}AdQ|BToCJNmzQRmWS<6GJ^c?}Ov}^)I#x3ZH&2L?29t zBENXm++cq(oi8DbySsY*Y15Q3M!IH zNUA8E(zTFA>FzG+?iT4*5T(1jYXQ>T-5rZqG>hIR_x(Q4`|Njrdwk>j{L|sU1zgv8 z&Uwt=aZISAs8dk7jU&9*_eJKFyWec;e@Si&>!}a!`ZH@o zk(fS#(Y8`>ZzrZOmiWISEX&sOy}DU!`+L?0lXwQWN|TZnrh`)Wx^EPRqmz-;P#NL%)>et!BRa4~*Jv@-^CL7I^3niqbtwtNumHmR9 zY2Loo>zwExmX*ct_|-j{wX?mG%<1AjIIxFL_M_MBlvt)ocJ1}^76%90#wuKTCy@M~$Fm>1xj&~-DvG1Ry12S9ibZ0T(k`gE8j4DfAci>aY&f{N z1zd*3hvG9^4xBGO^YY2*dQxi9HAU|?kNlhj7w6T*_4bR@lz}Rg{OIw=6_UcXt6S#bs@3Pm$zcHK^bFSQ96`Y6`w}Z%JZ67TE%Mq zR;m{rnORu_NliIQiLN=x6{fSEh~`GQ+zQwJ8CJ7#PFKY1ELzQ~Iofsh)Af8$h`Wpp ze`8FHgPhz7Lbf%&>IbdW&f0HR1}uBbR0G2P3soiJ$)6g80UKe z$GrT|DDKgdPx#p$Ktly6k^QN?G!f_S6-+n+a)TBY+94fRce|-ry7AYHJta(P0zzE zwix6K2L=`(Y~&l;tD^WIO=AYCpP&2tw@<1r+!HBkGa!`60X8*E;&JKs2xXPI#%U5= z@v)W%oie?qjO1N!UQC`}wfXFA-}aBqfrJ)o0e7A_mA6Ui!}(c2=odpkzQzU2@B_I<5X9#Pr5+{wSdW|3i7~H zxgS<(+S%St0=mvQx8F0NUL#HMtWNW=duR9AhQ`0Qmv}MXe|Z!j&N+8(uRShl)#r0ej`jB64@vF*jH}!U#z7PWd|I7Y-w2E#;5!^BBxEnv zY*&Z1PA6Ke^U{nJDQhcBGrZ@#*v)<6*;ssUQ%&=F4q|9hCUo`mOwG-Aua4Tg{vaLr zePDgRUf9%B2!%>ekB$$U4A;>;>=YANS>NDybPzv-gQUEvk3S7yAmDrfrE~I^>^ezcdX-t&^vCo zxXh@{1op(U7ih9rP3R}1fHxA?m`b*6EGcm|Y5_{Ebe1P$vp&*JI9X&emGN7BST6~O zdLnnx`eMZ|WMjbIhDsw_3+Z$mdUlHQ?%`Y4-?k)dRaI0}RDpJ4AF{(~iX21;9F6v)7igP9j&aWoT-9;i?ZOh7x}D(P=0K$uG5FIuJn4^aerd9 zc|r5o$P@3y3%dOW71L0m+`@P^+F#6MAKs=J?QwlwiObsev09{0V199@gG;v$)W-PG zh2NZ`O{cY9#o~inT_dWqp}wBZca8MCu1|Y<3()swf3QMnFg)H@5OJf3l6Jr1{=9mt z&|NqFq|f91=Ev2Gi7Nfg^Z<07kh8r7*>ol1dn3|T@)|15!30|s z!YJsqPqE$&3dZS4Uf>6;j`ZuV-v>fXfX~T*o-p3_*NQhYoBXt zF?qjZ2=DId`Y6T7AM5?wML?i|;{!cCy8ff}>SZa-`udt0)19p))HH-;@P{>|Jomiy zHV?JO!*}v>bvhX#cavuk>{EE&K4WJ^AJ~7)^>OL%KOASgY;U|VYDl^E=JDL}^*Q(P zF*4eKjk-Czyb(u1q52$^<3_f)qW^7qY3X&7GQ(qGpRDJ1p`3idfAz{_E&%@UVcSpONxf`T*p(P_=$GjKHpoxgw$R*Ug5L-(>|VA# zCYgcJok<5X8;N1RH)nb|pZAw_Q@7fiNyNvaBY`qIUusv~k;7MC^L8tV+XI{U6~GbY z$wP4{4$hASC$l-O=@~y3j0ZgOu(q{n|9FV~e&Y6o3^{rh!JqIvF`Lp!e`#&FRWiPs zg_(JD%4iGslQ}L2f{2<(van4;uJqEU6yYQyljA?NC;xVQ-@VhuUm|2TqxWVO&#%iqM=2{h38kZy2yR-Q@6TaR7R_jaYBbQx`r|4@h%}Q! zjyx7rC6vlpH3(4zk^YMlYVzP#Fn#Oj2u2~*5eEJq*bhz)T!Bf0<+sA6$vDO3s%0AF zv-M{69CP3@IU}x55g$8W4>6)sOC2ybGmbbczHw*X!=28a*E9I?tzW^Sm?LFI>%>S0GEW|UMYXt;`6DFc z*BVeWz@SF6-nG_#+7{u-c6DWSI6ed)ry(SqHJ>a@SFhK)p}}JqGaI60dB^eQ%>&`2 zDq^nGl>mY#A`q98p@l#Eac?}budnPR)hfo6FF$gqXd z=&F5^Ta95@6X8;O`bv%>J=#+ETa$#ld%{jOIxVkfD1hrBwlc&w#lX|T+ zH;(qiFPBrR%@LC_xfd{oy6%P-#$yGTo9{tpLnX|*xzK*%5)rLwmY)s#UMZ4sJM7u) z^$3sm7FY<{?o3zTMTp~~csN^`n6PT@J@b=ryslCeRX)TZfYo(f=N*DybJ1jp%_weR zIMH0hWuZ^14~&jXf3;=`zgFYtF{F=XS8sfQk(E`L1UEXC?KMt_Cf-WB>l64$a;+PgEx5v$C+aooZ99|;NI!~Jv$Q=4Wbr{e4$ z>JqDju6UbLq#P?~+u(T=bg&7Q;}()$&WRfHqf7g`A(kMX68(Kc0bg&Ur>1@pof%tJ zsjcdk4czj*|D8i>!#|Cb_Wt76+36jk`EgkC3`%ZTWhcV33*eEvr!g4i+aZ)~t2k*$A6H#w*l1&#w&YU-rGy zYC4mjv#8${rKMxxK(t;ty~vi3*A9p0$1)`IsUNMvNR_TnVC|?uYp8G-MGwl%_cg5d zndr#h4RVzX^5(?2T_WpK&he6dM36%4Y1E!8N=Up&|&yn9(W@}B3&MFwkI;Y9{_uTI54CCPn?L-NqB~!V-7vf+ zD!(M$_Ou@Z>B0=mr} zad?h0e`Nk_3KpzcH}%c0kD>Knyc3~Fx5J3t`)4AoM=?JLW3#pH0OKWc62wzM(?!rB zNG=lv?d~&q%nUb2qby{;5Yz~$sN$NM^93OS;%e19OS#wSBwvr*z78+;?-D9qF?7k{N{7>H$_}ekFGQy@ZTtqjgw|M?2a;n=@`Qr zd0ltLZfirGJx`A^L2Z=Y7yteH_2qaz zX)OKEZUb>vGIi`{C2u^*1vd5wCx>Gg4cc-VJo`#zZ#^3=W}RlL)+e=<3U|l7bfCy# zyTruj@adq+Rf^f1%OP49=)~R4pRXad>E>Le)V!S6^@3^nmZWMonDY z>^!`X5|+egXNuS=mA$7h8k+2Oi~{KA(J7NBa)HSf>S4C$ipJ%%6J&owzqGdzwzJTL zDj^~Eak1xH_b6sbu~ywsy7b*f;Y?1^g|gGe+99x4{5+&2#l`+gT_-f`MEw*4)y~1e zY^1y##T$d>3OFq^RG42Bni zf`fB+us}Vm-{lgq?43#$PRf}PN4ukoeI#%bs12~jd>id_IMU{9FWz7&ioy>=-o+sV zC@md#=25O5+@QKS-7Z_P{0*Efeky~Q1?PBwU}v91;FmDy0E!fs&&h zB=P%&%V~?DknDe=doBk7LGgU>mQ%*11$7|kD1b+0ufxiYH*EU`WAy$@VqvX6M&gmZ zjod%(=S*JJlpy=(Z#|+IK%kXS^z@$0_MXh&QExze{PUlwIRAg*Xa3)_cK-9LUbJ>} zWa+m01NjH!?WisSmpIS~xt#VjgoM8Ri!B3R@**7|ep*^u04N-={7NPoF81zwBDa&N zyD|{%E@0Yi%K#=>O2MeFvO>c^ZSMuYXJA&cny!)RdJJfYE1<`Fz}}rkNyb&%ThpFQ zzjx=oQ12^(Z0zR#2sndxb7cl(D-Q)=L}4upK)PoH3iP@HW#ie4>fLs-II`4>AwatT zZT)D?x0zFzcC9mi*Cd<4NXe&i(8{W*sDKaKba>8J;-vi9)|URpL~cekUhsB`#3 zP1JfcV$RE1s}59`YUg%oRHMN$XY^|L*!WnV#7&LPiehhUqsJ=4+Wdj6J}G!A_l`1! zd%e^+jEx|kruTgcU*LlzN-q!%wjR0g0DgJpMgCVG!tq1nB4C6R7V=l7p8oiGSMr*N zcDHS~wPn$8vx-iPAUUzXasJX+DiM*N{^XM3{*1MQTY^{8n8I>8>n8d60jJqqfiToR z%+YG`5?n#wx{c`6)4i5E--mp=-q>A(_Om}^Ojy;^!XnvdrFBoHjlZk z)E2%^r7QbSV4dis4Gzb3P^jQdhong8EB4JRtG`v|JA9DxaEPpT^?Wy&@Gm{3I}f}c=;$L`Hoz?oiaZFxN6*NJUk?X z*Hx!!(AO>Ry}Fv}`8MBB^NEy1Lmo}wLZcdgMPoECdY1L|wfHGe4qXNWr%llFt#D!|Qol)&> zkVlEpYjSvW{gGJBz16aGA&GR#rbn^a*!i%S~ z;jvSh#afVJt@0|@Zi4txs4{7%z<}C}8bcC-hX!78%6~K%_YzN8HZt6R_m@n zpeHOg+7Op3{P+p?|xd$CUbfm&Ha|gmkNyN{F4U?jh~^huSP=Ih`Ds%e3?CL zMX~u(mPGP(g#@>L0SS3o1*PGzQTqPw4a0S^ zfG)f{^Rr^!%rv)7ihismVuBL$CYHzRGD9d=E-%(-V*@Ro<;vvZJB~Omuggh^ZHy^? z5bg5ajMYLPT$arW2ss>?nVE{Vwj&AKiQ~JR z^Po-X%p32l-kEyb+o^QdVEcH5Qhrb^;S}Pbl z8c_f`EW4FT{g;J;P6);&IzBCB{nO9Uw3Wu2j?okCeq^_3#7qQNqA?4P*B>uGF^9>1 zJ{0n0&MuJ~|8##Vez9Tg7wUIGCESxz=WJTyve zN{G28^*no377-aoN_+Uc@|?cdKv*2xBnL8z)8yHrwYA_^UoeI6do^5*eQ<^*g`Y9{ zVV&nWT3A^)R#||T&ws03SWUB4@C=@s4+Zx!9_mJ4TevU-vIsiK;duX!GG2dTrN>T| zCG>J?YGwmG(ZJD{<|v>!hsxwS&yBa@9bk%$gn|zZJ_L zF%Cj@{zKvtlPr38T}cybHg?-O`Q+s}!Er=JJYt2fW1cfo)%SBgvQ>Wt@92*IG zR+9;V>$f#l=L3o~Kc5NRy=NMh?dTwp{e>^Yuo z2X@x*{m(J^XZw6xE4Af;`>;{6rPQLNU%w)wqHGSYr;n1fRuJ6mRv8%?fvp%G`>Rd{ zLe93fWwo`BzaK`5MeYAhuTjFD)PgGSb?+Gq?RC*ib|y z<(qn`EzY=lPQlwVGH7~N5DBI|Zpy7{-#l@Ct43GRpPrD{MH+S9P@qFoQ^HTq+)m|W z$eH+EvUwdhPV>DG=lwGs$cA!nMAv)Vw3Kk&qV`Dn+yh$*I=Vmqq`uku%!HEvG}EP+I0-Bupnts4?qEt`oKv0At@nV^Xpvf4iH*TVg_v^)g0PSpm} zN~=CNO04h?Kj~aBZm({2id-0kxGy9MKMC~Mr#sQF&fqCvdzw=;y5%CC+1Tt z=DFm1VS;r7?S}+>HXJG|8#yyF4MIWO)s{LRU3xrZw97ik-cxe#zKtGil92oal(Yu~ zL?pPNJ2<@`nMTEFXbMEA1soBGQ5=RmLDoR6Pkp3oq0eo5q9SP6JXK>^2=B#1Xa&x+ z1f0W(iHN~Rk8sMCBH}Y>qm*E_TWD!TIX~aylj%Dku6MMWX)pxiE5CAMFy;$k(yTid zVtS;#d#!y{q*+;}+B=c6d|p`rn*G@F5Sp)#J~a6Hu7X4TrFKtcMFcVDH`{=tg)Z6K zVr`Hv3&xClvz5nHM`kZ%`2*&@>Ud9)HA;vDYTvfDAcw_!^0|>%<7txbAA-WR6tGow+yZ}8Bakz<9@47ll-S`{>;{}RBzkjs!9zUy=gjv5@MII373ln+$+utR}2t7p-%U&EzD!#Sn zJuwR<;gdbZ=6wQVZah16V35VW`@rLZ7@CyF%VWpL z7xW*SoCFbGA2)a-BfprNzFm7V{{TpBq}kFElxu4RHXn$>Go;Ph3`9CQU~r|wqHyo9 zwj4Eb+t-(53UqiTMDl3{RO6vvkFGgOjFmwt*haHAn9Lbg6j`AEZTD6Dua)F4HXIPh z0zzKihB_FDimH2S=Hn+-DAT>0_al~oier8I*qB1)piR=!$0x!2d0Wli)rwHFM;^|k zgfDz|^VD?GY#mg@zhyPSy=!RXaR-O*(lQ&;-tBDrF!PP>W4{bg-dkj*QuS_qvc^b&H`eJ2OHdwg{`x~f_ zDU~0PXw$myFPaV2bXWB^t-No%TYfL%$!@k^NH~erM5CO`X4#SvC5W;T5?z=$52hVT z^x9wHlwVi!wOafu^F_n1TrbByJy~0Mct}@h$_nQk&0ek_7~3vS;#G`Jg|U6%Fl^y) ze-X#)C0odKdM}6Jq~a}2|L8<)&<${Sjzq7DVx&J;sc=60ZHJeJ{FOn%?-}RbOylV$ zcQqlK$xM|#1+w#{Q;uTwLWr^ScxQtbUZ6}WFcRGsCwZV0XqV?1FW&OetA_UJ12N8H z|DnwXBtaybzvN*w`^*tI+8v$kZy6*B*gtoX38A}p3=2*+C=%Ke46cL-A zCV?Mg@|4thtk8R!7Ff+(jO}u3KfAheDa~ZM6|-AG7D^*N*4S?Ajj@5_kU)exY6{rJ zJWrN9)!n$?xd5oaLfupNq0nGDM_5v$fP{p7mV@xOfK*idId=JEh-(Hc^e?`}SirFd zo-^=eQhmFt+T-4vuM}iO)1!M^gwGW9W_5KH^Wfe02xZP!p47`LnE3eaJRg5ac&@wGI%Vq@+9w)fwr)KB|Io1q?IqmOo@K5LRf4YVPiwb<9;#)D2t3g z;1M)`&6!_RDhdla#3O0@N+e;V4OTMedj!7+~f(}}6Y4Kc*-`}4x2 zMTLcQJsYt8k1jkM99{KB7DO`RT~eBE05p^xn%nKmM#-Db!%d5*v5tDXq6A+k#kpgG zja6Qq(Zzq$_;|(Yxl;D|v($&{F`J*c5#;q`nO_HA))gN5N)-W)&5PMm!IEUFqcjH=A&j)e=pN zN=i-Fz@t6}Da%o$HduKVn9=rb{d56iJ{b3f)w3MsrZ=~TpDy$j zaiKm@QBi;R`SAvl_L;3qF4emfwkmh|44m706tT32QJ8G|oOkcW#ugc%o|g#OJ=fF6 zhJD8eM{-(N#QsT-O9!;m6ijSBJQ6Q{7Bj>np|ml&KAL9AYMSQzF=nEqdn>&_wSM47 zCx+&HFwhNF5oa*&=5m4d0(}x*_oZDJ^_c^%Bh5&vo$~YN#GG~JwMY2PO+Tr+b7Cos ziOCG$QG>qs5+=pdOI1)Rk%xC~&?FhA6i4{5-xd#}dSBK~Vfpf!8^b|+7DD7GE@q9% zrfn|r1GiAY!Tcq3*mm$)43NNLa^EY{Cs~bUsQ%cXlkD#+34XwVc`vPY7>?dQhM&)Y z3IT2jnu)0fVW6=`2dIPT|9rJseSq=f@!@V&$K;xVg~yL{CZG1`ze%!fVwWC`k{cc! zz4AQcIov>B#A6s48O^M%=S&7i;4PW$)l1iRYkyirR(1#)1z&B`?e>JKQ^3zt z^PJg;({W7(kPsV#aknRjtq%l6iTG@vs7?+Hc<#1QQC66mnOGnU!wxu|tmcI%T7VWP zH!Am!80hu#Y&;n`dw5}v_+5q}pZ|o#S8}8~8vd#3CseO8nS?rN zj}4a6xRcDy9(I<|IXV7FmSw3w-Y#2ug%nz#UuCWmz?huy zJ=7~Lf-+>B;2U&zZ(5R#&a;YHst$s5; zB7#%VwvZx?hS#y(SWD{FJKnKd?y5i^E@%farDo-U5wJbgiNtLrCWz44rowJKEfq9hXYL{;oj5R8t6Y9~tW zlejpy>y}RSf=9{VFe%h&la2H5RPNlU``~_CIrrt}$(83O$S^h#Kvm&n{j2`Vb_#@d zESpNL0MSM@>W=}VpiCCvvptytFmX*RC8z1!B)&}8h3PH==p4jz)uJ+x1x^TrM7s|} z61P!|qmis>PoL8c^N6IAduNr`-`W;pgsH3H4h651$SoJk zyGNCN{$cUd1O^5y8#_Ul$jG%CFQ0Me@TYo53_&jHx3^Hiv>PkA#|+p|Wf#QNFFJpW zjE*>r(aQ+cGEsjhv%K;DdK5v;jcedX}#7JMMU0Q|1>#iL-<6S&2eQ7 zID&MW%k|n*FyQScS`9*kos?z9Usk%+>{k|+gg zsMom^Y_o_D2sAfwX1dj&iTf27m&EDtkk#?g>2i9fQofd;yQlPI5>$)F4Q6+@Ut^WE zJ6)^Ex{7hUiB8CxC7jO|E+y4uF@s4;Y8<~q^Ca+A4zRE>z3U9xjbl^w{@)u{7y^>H zDKKv~iTP}Egm2Qz1;t}8UDX1*Z037q5pfJ{C|qv|NT#8A-Sf-^TV1eUlQi8z_Pb( zi1xB$&cAeSwTD>i0STkrOF*M{ANWQ!nkAJSbIgKGR~Y92dse%&yj^L#hkR(<9_Ju$ z+&7>r0+emzKFvTM@_zNRSB&^bAE828mNKdHZ`tYHF_(h$35-^^hW8`XyK6h!G!aG@|D42r{+jq7@18Q6Sh_E zL<|D}JPn=VSWRc#0U7qU3yi<@85k*au|dTR{qwc6SnZ>KmUeM2`<928*@6gg^8&YS zxkd(U19ny2>bE#F%23CP?~$moQCI*_#g3lt&McYr{?nTFmModi2dY~_I z>Gc~p0BF3{R~|2iT>o}K&3Uyb6(0Iz(1pN@Py6t?n*p#-mcqf{T>*;M)1Fc6T3$`g zgr=RN0vTCR(arT^{+yo{b!`k9rn}ozo&V`X{ZQDs-lN<+LxJ~9b0RHRbrvUs5tS_8#jQo^ovTcHLzUQ)Y z$5rnqo+;M=DEJ*fk76!aSnRo;5qcA4z8|i$-tPk~1k1p>VyPTxkL(>zi!^w=b`SVN z`4{q+^f$OJG#gFyfOud+}YSU4&Mii`jUg*XBf6{A7_{SbB%_ z%Ya@tr7yFkV4T=p-WgG4aZw3x{*&k8cCwdja=C;->Uy$`hfM@{i|Q}?1=yLNowmjl z>AQd>u*zHmj}#98Vfj^iy{^%~la2A*x!mHom?TMy!?e69nYxkNWhNAun1BE`S!tXM zOi)Kd ztT0{wjVAB>3sLkdo|^M%#})Uj;p`^;Q~~g!xK&#va(TYot^+JItX8cOqsjd4b?Mbb zBX~fbGOxUM6knRHo`|7F?J;etp?^78+8G)aRvLy70>ysrr*hnZq9T8Pku&u0E&CdW zV=f5o!~`2f1SytV*@wMlKrh0^%z)yQnwjaaw&WSMxe3NEOw&M(035_CViB>c-)CME zb`l=R_pkrW4Or_itS$DR#Gvsg_uC)F?ZE()II8ukR@g2Jd_h1V{z(eraNTv~MPk;$2z!y{Xvrt$>a=!4lp8UKgGt2I;MY2oTRi!l^QY7ZKyD)LCm87<{{IP@N31^xKDC1*_{C>W}7_*qyqtR?1s~ zWb%WveqaM;gfA_VIa%CEHb|t1pKG;j>I5j{%i4_xXQFNnv_T5w3NL}OGyK@sJ>01j zXQHY~48F(Z$i&Lr%69vYuv~EIT5ef5^k^(YTttuEDM2M;abn^PS@IPh z?Jqk3a2|?zC;>_GIU1UcQi1x7Jm3&ZJLdXgu5Ns(qH;X;=L;1o<2bV9VoaTbqF_H* z&F5ZvZj>N=G@-gJz;Ba|W`cOK0@%zYQGR^CzDzAn=jekAQsB(&_ z{q61uksf^Zz-l3I66dPXRW?-)r&Q=S5(WdqTEf!n_VEpXA%84mWnz*P3sg?-=$SEE zpFvvzviVvR(iQ0(RNolxomQp%%@ zufD#y&Qmy6s%Q{+9Q}!p^6D{p1Zmi!-WY#VbI7K2u{JcJm7M3KHeyl5^KS)J*m;VS zAsks&9$iAzO%DS%`Q?Qwxvb&9_sEFXE*tzBNT$4e+N&sE% z7QFK>>1eP23od8NOw)pd4X=q3WR89;-R6HGuB7v>B~R#x$@LWhzEKNB6Gug|;^zLTsZkufc_%?ZLHL1BFlK8ldO`gQ@i?L6;gLYRC?Rz{ z+q+x+-p)_DpsuDSd8fcG^7|!UmXVQffR|sW>vjugSb4AEheGKq%=#xypqQ8seu>km zqNb{QVPjLuDN&5hy$pm#ppfC&7P{nDaRjc!ph7RvFhwC=mygU23uLg?7r}t-k)d`s zxC~@}DEH@Z)euzUb;_P90Vo+JrfX*{^o`-`O=w229FKpw8~si4G~ah=-iM%zHU|U% zuyO&yzD&wrEMhL46mPPnRWt$(6%ETa!v^DS;hp5Bv6AX}Q{?J@9eV3$B+ejE3q;RI zOAmtJqhG(N=v6C9N)C=Lc?qK_Wm~$tpCW;f{FP_~@YPXJ=8c*X#P*abUnzY9 zkT%Q^&7#o1jscVm4&m3x=^0cLIO5UNbd4c$8R2CrH;83HZ~@A&wp)Xr&0^!BC_kYp z`Yf~31EHHM^q6Iy95qL-_UQ+Jld@67(2#*?hY^XcY-afuKh=HV=nkohd6Me-z z#mQl%lb8Pu*0DIW{jvd^ejwL>h*k%Kw|h*qGI4LvlpwKoV02vYi-&`b1>!Ai;OJ14MzBq>-y!&Y61I@XvG z-=zDWh2cZZlog|AU>ZoRsdP0uidK>XCZdh5hY~#dz@4zV6=>zKKY=u@=oFueDw8 z;dMTEO-_!i%>}kVwYIjRp`k_1g4GG{DaooqOtNz!nVt(s6LWXJZVd=_lY~N{hd*m1 z9wEMcdt}p42WACrS5EMSAckSp$f#Lv#-Q7~{}YRgWmYOu+XDknn7&Mm#aKlm+OO#Tr*~i%Ez$QN0n^sA2~a{}gq2 zehkB_FIB8RQ<+>1fSiMk2#VPYsUQ=W3S)0^7L?{xJ^gKJkz(UC2f+5%QvrpU0WnA! zXje?dm0@&8)VN8xuF2xyUKeQRrhdE98gTApIp0Qr0c;i~aePf)LW4;V5%$QA%{o%h zo}2V4IS{f`lvQ~ibx|-b73Q6PCJS>zfJ+{9F=b^{)1b`EI+k~L*CAIu_fjwr`q$x2 zffcgG$;`+|sa~}Ub^Cqy2+NkcXBPw;b$|@_rNAfcqw)EQ`HtuNnup}$5|~R?3k_80 zt04-9EA8dT2#}5aruFLLV)=?C`1cVCW&;CUS3%7 zSyw!4^Xh`B4C#YZK4MSTSGq@y+^_nb9p$m_OZkvDBmTz6*6R&D!e*F0H6gDpYlXiP|H{mo&A=&ROUsb=7OAwi7fZt87 zx^d7g+mTKsp;`YaOV&A`gy5Y8vcEs@OhJKR@t>7e>vEQGAFqp}^&b?{E32y(=H?9z z4QsZw9Je4m7VLs4)^1Xge1(nu^%>6*Pu(k!XO#yQiOzqJ)hWIT%FfO<<$1_6@l_GP zU%FurW%*yvZ^qj}I_rOlyvBZHMmXEv>m~5`7My;_E&-Iw}j1yWu6tuv|NPnc3AP)*ys)(;9$5fJX=d@lLT_`7aRkxeBJn#sN>? z)!vec2;CW13uaaeK2FmJ41Ge%YM=7Aun~<{o7YTMpV+~PqAKZxo}AS>;7}yCl&#a)?GtG}s;UZX4%!?@3<(Ux{O400h2JB3ET&^!y}kJkI}_8AK!L*w z5-I~Jmb>J?%B?|`8ORX4rQJ~n(#$zA;}g;H|34ncN z93%B2g+DE3=u|oGfv_$Nppu*sve*MRZ<#t7i^)Qnip@DIO)RQQ=|4Q7!s1W9>496{ zfIRpo7HmnyWO5FUFAJgY5B(hGV^f_Nq#E_^pSm!>I0vYqEF?Qb(X@(n76Ai}=;)vb z_3^Qi2D!htnkfeq2E5W`$E^|hn}cyhHa!fpxc5Kc%ZK;WW@}#`ZNLe-^CYmRBi;fU zxKUQAY=tGx7o5`IQzW|MBsuYpwZ!0MVQ3$y~D-IsX@yp{Jv zAT!0C6#cZ2>t2p)UW?j_n53vMWyZUp1!C|wvteYF3-zrt7YXgXO=DYVOj~b%7 z*QP7WfkdG?>(4m-Kg5&f1~dZp+{Kbl1_o{Q&E9h?3_DUv&=`kVKDO4Ou7y8Xy7&)f z>qY1QOboKq197e-#A#&96cSz0O1i=Rj|g{?ldVyPcO3Y~Gt;w!32dAIuq?OVUyuiM z?dAks-f7kUZhS?ToJS4=LKfE2zkI15{_&-%v{>)V@;?c@ZmRA) z3lNR20t`vk8z9W`A2}-~caQz=$L+Y{(c8;_e;Bo#$h#W*dlL%gh=Nt>jB2)LE12KY z$8nFgXEK((5J4y6TKR{fdV}H!o4ElNQ*e{JIqk_v!)qE{mQg&L37pvV62^F zO=u(#Tfl|k4*U)}nay-#u+jV02ihIb_$ZRc*2hv-f>PqKosp1;&{%;c$_t&JAYe-e zSEz3YAI%R^>vVi0t1ZRPR2ue>VI87Cpq$ChQz9dBSgzB1oq0TEB8K z4G&-T^iNJng;|(QmWJg1o^JTPcu&vOJ(W=t#kH6y>j!e#PX;Y-NYo&k^s1Cncir9> zktn@(_QE^EKfBv!;o(3h(h~;ju}p!Zv?DWBc(SoL z&vg=Waz%Dw=g&NMUd&q(JUXT8{la({U9J5s?V0qyO`Y@)tA17~&7LK`bQ2-Bv$fHL z>TS=xTEwAVQ>ZiN1Ra0HCh(st(W;&RA6<`PUT!i)USh=ZB?xdMAOJsfGvE`Bt2DRB zt?C?7`-e@l`9iPFvsmMTdTPPX%*a&b0ob{&gDH%^FQj!E@bY@4fvV(?aD5I0uiDw6 zjyoH?`<4m1@iCrzpW?!3Z^r~KpRp84r`WsWaX$Ldnvc=xhxPF0H(XqGuS~Y{4nZ6` zlI(`k&mrk#4kfS+gaZO*`|xpb8+=8xQri2ry>ISezF;k)q3q@L*0S%~T83WxeEDqT zD?7Y<=i;@=e335)w&D()T=L^9P7qn-p_5WsSjcgEF-ie8%H-^)eSjY?C8hM`tf0ZB zE1BhI8JCvV9rjN?wJ(H(-V>`}H2pb->U^V;w1rwk5B@ayhXY0aLXYL_A{f!SzHCi@ z`xZQ3FRO?9#%MP)bJ5Xp1D|*RYi0#*F^GNu<52BJ=c2fWfAFu~h}1s)o#Oi!b5=%% z4gy494;1;e9~Nuz0Af}&Qbcv3WkilVX8Vg7SprzvxzOaMUa*$`!U=*bW2;?mTWi}P zV~+`@WVzD*g&(c3kgb=%vcB=f&;OEd22#Rk5 zS>@%+L3o8M9*#Ch#C%gp?iGh92fX0#@89RVhJd3<=MdZVrID<;Xq}QInUaS5*w5c_ zan$H3W1;5$tg!8EI_;Yf(}%$L4)}b6$zP{$9Pt?$83Dp${JV^VJS*$#hscl@frNTs z=SW^?dgRZaM24<$j`crFbT0psf9lUXajlLtNjI*%R#fnoqUrd&LFxt9T-4%KRLsPl;F?D2D#Lxwllv-gaAfpC5qHLY5|&dgQD^&yIP$HcsZbt3fUl z5$paA7(C{X)2P<`zh$b-vD zxDRjrV&g?ir-va*;SEUA&=+}*75I!+p)i7I%IR{=W*mR)8`^WUHeC-7-xlHEhMvZw zAXnBE7Fe^OhX$N64c(;J#tdUWS25msbFV+smmn<<59!^rXi?u+v(lbJIS z$#}2nkq`Xez0P(&0YiOePc(0dQ}v~~*y^7@`~WB-<*m_XEt8)lnJm%}s$yqh!S2-A zvE52_zN5DWjSgs@0jLL`c4`hL#WhVR065@_K| zn^61boCj0Kn?PCp!#xmD)0o8JI0i1X4haNuWlF&hsQax1@8G5!*f&8g_1p0VW|(1i zsJ^-e&&r3131xhJYXMAzVBL#PA&9{MQe%2J0nV!+g5nfPo9Zt!X*kFqMwsny5!u6I zi5#vRz-xY|)Ba)-_$vSc0s{i7?#WQ9na}0fc;c-Bc(BX*pQ4-EUy%ZD~1jI`3xv$wZS^A2sFg}~1FY;S#IHOUUn+J&z z`gzXEcmO?@!o6*)GSeWSKAVX{AG+aoqE;?6GO{eH^WtCsZ_nLIDToOG2_wZSnV&Vx z=g5*#ehHiV-y0%%(HfnDzNa_cipXdo-AycNH+1l?y6C}|C>Qc%z}w*GmswO)6iGH- z#bP;;CW+EcjM%bxiuP1i^Woo>`o()?9A{t*bU%l>ZwuH*ub}s>ilPJLoRN(jEK1Ny z_?VW-YPbJ20D{4&RnQD}zBl^tgO>1cop7=J(9pGWf(|B4u|EghToyzLCxHasn{vQH z3Rbgef^q;}0gpr`(D(l~F<8w0lmr993X8?z!Y{I9`Y%xJLe`?!9L$tFobQT&wL=Ss zTJH=L%EapI>51s*;jJQJ{JoWbvzhil$v-`-FdZ$@Y8A1qJpc+12-Q`I->zW{{K)4*A_qjdL;Nt%?8h|&HLBoE+36E#GA9AGL1j3A`E z_By@(4nS&Y&VDLO7yEwHfv*@g@0H@zuZDQNDqmdpgeR6hksBD|nxDl`r>l7$O+_i~ z%`}~PWV+(@@_4LFd8f9v3J8Mql>n29ig$?EH?ey>6<$`8Ngi45d@t_2b?8g8n->Sq zXJ6UrrKMYH)WcTfI5sy-=DM{T_6TCnR;EWmkqF%L33sbd5X`%^P!CU3XD_4Q>}f}} z{Y~^h%RL%I@!ZnH-bDWTWqp1|r|uT;zuG&?uqxYbU1K0(p(r5|A_7W?pn$X@B?w42 zNC}eCFe$~LyQE86x*MfIy1S*BbWi3UQ+?m{eQWQv*V@Pa`})H}C1gJHdG34MV_esH z;RaT*varcEB;p)n4|6qd9qX%Uj`cqBiF73@n-O%uX3uQ$}od! zsn$;$86eW$GG~Vw@^WL`-iF6y)7AQTYA}QN`g($a2_3IX51WwZ*tIVdt{ zM!EP+E2q_!ekmt~M4KmOI9XAJh1Sr#=qsU<%QzTnCt4t@0W(#$&6~><2(PX{TgK|c zYOM2O^kK3|=?UE+6n;vT0O*gK6`;d_XrQMEqHDqId_fZ>rzbHQfh+X%=|_tZvCa%fVs0kQK|$A&Y%r^2*PSA~oWK?x zFtA;9y)tdTy+A>FEhswVmBFi_JX4TlGU;-te{_Po$6cT+WnI<^J>SjV-+78 z$34O-m>|P#{Gjz?xSiHiLzAEST1DRv)hiRu&ZW7kK3V0^W`2+){(3NJG&iOXoGPcu zPKU_LKYLcihk8WGJJ!>~z%VoYeyijBOj(4nI^(uCX2rZK4DT#V zM{?V&M*7(h(8;Y1<>AHP>}0tPl@%7Y9TcQv>|nQUiJKEltSpnk)hGw~z#jgScq0xx z&^$oZ^myBTv37mDJ=}G%)ZnBy09V{8fJv}E{`|?%cmZm9#UIG($T93b!vR~68kv4x z=6bodpO>tqtu5=Up*;SWQd%aC{3K9QP}3}AWKq1Q&Rm3&zmzrog7*bEWH@N0(Wsdk z-u$G$dI7MDMyV8$a%M~3Y{nEyW!5YB$0zYtN9%kaqpiyYT`&)hc}Tk0d|+Te>CU`d zVtCPBSA{?m$gp`FkIrrj$u=e=#5*Zfa+K&)4m0zeQN7Z#JrLI$ z4_WE==RBCI0R4nE?ejGCbou9&KPtFvJVNg*z*P5jIIHQx+#wyuvlj0udY#NlLm!`CHuM(HFuntJt`(Fx`;0V5(ZBoM271es>pa+v#dW(Z2;J0$c4N z&|qIyNrlLzUgiZnsC`9RyXA*liEoXg+(y^ic0)LOnSsq^9xPqIlhh z_C7R?D=RC31OrvNs<&;^9?4CKk$-iHzYRURXrbri8+>m4dw6h*ux~^xDCD#Z3U$7z zdY^ZOAU6;*H#j~R92xoE^TVhP&-4C<>%N7nH%WKA+znycMl}JvbqI0UCmBR zz%1{3aj_zq@k*j6(Jx&TsA9 z&ykCFknUA4ODL=Dd{nkO`^~+}vGV(0R@pm93<+PjZGmjd4b3{H?rwxG z3!nXlVq;Vty_52N`&T*w#RgtbZ$W5i)cVSoNIj#ja$WE>_B6nm3=PxJ?=hR(Gp3zb z7l4Kcbp-_jsxuZl34TkJmEILG(5tklAkH=C1hUMNECEMJE^P zaA?M=V_G%^e|ul=Evfu&-(WPUGeeOd#hixoDa(`$`qN`lQ5qd>Bl+j-2j<2`E%YQ( z>w8QGinW5%#0Y=1YG!^tJnG*z9JZSOz|6mzG89syP7N0}zUm~#N&LUbermwWnohe` zg_B!Kmsv)@$Y%cI5u}uUILfvdCag7ryn%qkX3OQS(dv#h%n|eI-r>GSiIhKXE29wJ zjSrL1x6-><4eFq&p!tP2cbC~-u4Sh*HqJ@LoGr1Knx9-A`>pSxl{~?#M=~5EmS+7k zNzTS}JPoXgh_}Ls1`$eOlHGm4%zRLlDPVN15XIaT&e(90tO_}9W9M{QSEg)o@8-eg zF{boAS4OZfSmgX~w6V>{{+TKT#u|MI<W9K6GGPp(jp|3;C) zTo*+1r+Oy@E%dhMyT>~k^^d-!LVY9D{H}G$+1<;lvGif8>_H!TJAysSvn=%S+oJs3 z)o$mTrDxXqGFMdALt+^O`V9vjF*8pB8w^~2k-XbC4 zm5!#iu_xT>#Ba>4l?ohiyR4G7rx=dKoH?^W*=<>figSfE|8E&jA1o+!~~!MreyKnzHs?my%~FK?y=6HSOe7}+2G zSuY-;U2Z^mC+rseR0g~OrN!5Tu)2%y-7dvwBE`B}85sZ`SYmi+3RuGnxR(~YDng+< zNG-N9SVFcyc7+IqEk^VsiqDW!O9gr;=3{=}6lM71Mv~JZar0Ny5C1a;jg`0 zJ1u^fM_uV!x)AmQT9tCMm2jw>CLgvSl2Vb(a$-X^i?>3Xh<-#@I&?Zj8uc3XblHw! zhAW*hwJ@RwQB2+ciE!lt;!!s~3nE4W;rKStc;KBG!#NWk7N(75^%HtCB5uBtV&Zio zP&1k}L(-Oz(1(Pc{Z+M_=SI`&ZoQ^5i(B**)C>oIppt^Ok^C3M9L5{{o=h!vw(*xy zLP{OHj#G-@tDD;UgU8ZMu11yFTqeR6yt@~kXQ(-80Zj*>;{?4A*wmAFU4HH+mwX@F zl!?+ocRQm>5tsQ(zWA@+85tGtr|o80XMhYUA|XL1KSFkQXuO??lk*%?dkjz1YmU^r zcj39K_L|hxRB=*^Sy1ck)9j{`&vZGlEM$4T++m%&>{A6|otuY;ERO7aes;dBbIWf} zBJtzT&H%9?{H!)CyVOcI7c!A8pSs9+Ng+*@fQdCzVgGn;w?yybImJ;JCj#^$lH2K_ zMBZ{+{`2PG-SV&Hm48$+clOSQx2a&Z$Adr+ru|>^DXMLm>*RYdcQwP36K7-;Opf?l z@&S471VJZMA|K0%3O;9j$Rf-5t*7U!xf~KW0G>=R+hxf(`L0mRHyXH|0@>FZK8Hml zFnCpe4X^KNCaIDM2&@aOr%8JD%zf&OgF|^vj#;Nx9f&NwL+_AescZ)NVTb#FzU=!h zUs5H=KFxkYY9HBAGF-t`6y%-X(cLZMycd&^5tZZaK9GT>l(nc)VXhSTiV+wBzArqa zkJ9;mYWDVxmf4qC6p^Q>h3=;LZC*VgyTs3`F1Cb6q(pop;KbIQx8^bPV+a;4yp{Im4Wr%(lMYnrvZ#+ttJ%2&-1hu zmdEqX^U0<66SJ9bu{%d9V4Lj@=Fx&%lj;V=K$*(kt;YP{Z62CX>EI90oBEKJ?ImwD_| z6)G)NhY{cT``?P_O_Rw=v$5JvELe#xc0|onP#|`}6bx|8b;Y1*{b>nt%^$pvZtm8W zrLplvU)o~lxl3%9TbfpUTN69_4qubF zWuR~{o9fPm6TGRW%q782(XV2dZQdQUbkq94k(qBv2Zs3zz0Nmt2@Nu6eaT+;W}-kV za3>MRaqqtIPtu@qW{5o(m78`v>S*|Fh;i%t-4scveAr{^pX02$d8n}|M1lso0OO6m z?M1Ge9Mm8;RY1Ax-s-V8ULm7-e%#mCNKAmS`n3+VneZG=2)|I5_uk4B{mcPN-S@&D z8o4LyoY(y~lwkcD8E-E#K9o>gD2-9rUgf*YL&Oq>@pz{wOlN>-R3h?#EO%==J#=Mx zS@uCvVj>xjWwr{ES3mFL$JwzckL2|#+nsz#^b=TP!I6@dh0R=SkE{e~!Q~D93KZy< z1&iu}kb3b!WJEXUX(pG4Lfq5jBKopgOQ-=X^{5Y=2sBFw3#E6$!;z6{uNe1E%x(cU z>!8vhE+Hdo`#BVc4{s|*nxUiBDh_rUNHUC#z@N3r7;1R?*M;|=S-TjJ@{*aIU9$DC zwU=aYXoyD7StVD9QziWP_!gV^uANb7(I;9b-7OC4j`2kPSvv9X0>wvqNo#^HGQpbj zY5CyF@fYrb6((a`*xRn45*B{FzjRM~A|`aIQ%(I;HVkehwldDG^4DBGh_Nph<96c;K<9I3qI><8i}^n<=`~gg1q(>i^ln? zXXKH4hv)yWemXR2;6&B-oqDPcy*H6?lWB(RIL;7w#G<02$FF`e=?`o4;A575IyX31 z$M86+mKrIU6&rE*)_yo$5IPH1OlZ-ZL%&QE4GnvwI|T1igBS5e_Xaib18|ho*VmV5 zoIIz?Hh6@(eaqi6#?pSNx%nU{`$kg(96-i0-o_`JhSlpCa){}%$u0q`X z#q&cuLMMu?pKh)Cz@9q4Nv_MH40sZeI_tYspaDhUcxh!q~^x-DhU%ddBK^gYt7F51_x3~Jm zw2DbC3F6<_m-@aQtR1WMvBrbb-7>5)Bm{`arB>6WkH2*OW-J|_0P2e?#iZnAw9cpo zWtQ>bk}^N$q=GF0s;RSUA@Y4wtTQRqAQ`%nI@~r!&LjrJ03gyrKMQ)^FhFG4j#vi` z9w`SRGWICFahAK;bST?onu*V|rL(g$3>ul0YFshAPCcc@hy6~Kd6j5u$fZyxpohtF z%Z&NyJzYDjnX$xu5D^pdYH{eYMVfwPR?Vr1_j08 zMN%(j=mTy*4o(p6boQFrRhnl#JoSnLc2IHZ% z^Ba8Xgy!a$dO4}eevXh(F3s|~9EfdJUi89k)=~UAWm2OGq!t&Er%o|2WIW82`kgv> z>%h5XCC1+#hA&~}lnjrQ_){ME&uUY|T#70c5ESCI-#E*pt*z}rU_+GL z!~VkUhxGcTi@54l*4ths=Rs6{11u`>?B-lf9@iMblfDbIR1&IL@#U9VTKLHq#z1)H zxNuZrmzSh%yH8h_xCcm748gQN(G&xIa9g`Sv-ZRhp>M5z zw?kWIMBbPgq=08)-mf{#y#-<6#+mGuUcJKp<<_{9@e z@egQyi(dD~!N3kyl{*=}QTJ038OqF^%p^q*mq?f+qeC(izPA5S2ca}(3QscKxfkIq zJ(lN!POcL43R+T2_}Sgyan3Q4q zhRX1vjVZV+=#g@hpjUt{t>W-NtkLmiGr{NMfywtN?ZO{EVxKODP(SII6Ys$(u2HD} zZLL#VicWaexyi-uv(bNc2Kx6t(yRM9m!prseW66UmP+@i#hmrKp|82!1BfI=- z8V|>_aS0&)(jGmy`7+^Cl|h~KyLr#g5fRBrN$2*zfjwrw`zk4Bad&g8{0tUhTiaqk zij5b4p?;w7|q*hZ0y;Vhw*-X6EK)oNKqAZ7|b@4L53I1m`@grr$gD$q??OT zSS@tYQ{TN_*9Frya5q(dZ%+H=*NgC2@OP@yl&drE+=#gs&D9-i*8MuLlI`Kc#ct== zcX5=@KAek@XHd^sJP2+9vzPVG4tu6LhtrIo z0iqXyvGL&%&nPzDo$%&UCMP7hB|iZv8v5X}b?WN*)oVLK6`n+r6s(R{1V%@zXCN*z zR}+E5SfL66aUl(OW$WSvzj^X~ZvDP^IZ)+bc!sS%Aa&8&c+`c54U~1T2m@r*203uB z)ug?A;$LZO?d&pDTp$>LfnW9y;0b6dFobiRchCPJ_hyA1cxXYt2nG zPTd6N12n4`LGr~4*(Cp_-5S=bzS(>1?(6&XhTm(cQ&qnuT5<$?G_A@n(Xc{Bgnv#- zN?hGDwh(#a=i?&*gU)khB|y4`Zkk4g<%z*E*x(?-v(Valz@WFU340%9Zv$`@dGHbg zoV1snlvdGILXG(eKmSP|Dj$)*ZI^OiL~?+4rYQ)^;xY_D*|n=gfde`e9~@lJ3VJ%- zQO@n@cx5Np|I4;l%V4}<*{8!Z?(*J6{jie1$~|`ZoYczXUh$*#a+ad(YTVTHbWi4i z^eNTt8*CUvF(A)(q@xZlCQG7(ruCA`^*#dFacOZO@iuJ?j}HG$xB4Zm*U{ZXHMLO9GU*rv~^IZJq}VUeG`p92#W#8tlVZUq#acT^}66?xvx*} z3FCY#pbx#W10(9;0%6m-pN+FnQBg`IFx_P1EY%&}@woe!>g;f0Z1mrVX!mIB4d6l$8OnXsi3aX?L$pmMIm1@@}DyRhzB#ZiAa|K zu!**tJ-1ajQ5@?p-`58LiVV?wwB2V!PfvCn^8ofqmcrfED^LgYdv5}6rr0cuolkBB zogs9}j&yrP#}$|$&|913sGj(P^92z5%z%d&$ls`9w-#YO{@pQDHU~*JSL|l|XM1-T zNaz%~a{UIXh1-Cq*HZ6n^Lgs%K!LMFy(#Y>#>@SG4 z3#@+g6gu@I*!2A-)$J3LV1ih8KxVEGy9-!?wYP@=_O5%s1#V!@iq0HMaK&3&P2ALz zBWR2qEwQ7brmm~+>l^#Fegv??_tdv(X$fS0Qdo^5cCJKF9=kOi!TTCar?4{W+)-zt z2f5?5cQv@3KaDrqLj6@rcrWrbha!;^_>6t(wN>QN#SC+V2!#Au+s!kbL@FLZig8^H z=P!2{Mky*aA2}sUq3)UqsiamUI z|C*~@dQCYHztTd8%*}6heAbo)nyXSl(q$y!#W%!m1i4tL7-uPn;^A@4D%Mal8!a%vi@oSJ9~KhgcR9=81|dF0 zmi{pKbihXs-Yni-ByMvuLO%- z?a%U~{0g@N42HYRP*{t<9AiGjCu0^V`98O`JdFNXkdBeuO+vHtaCvLKM6tw@S+qNi zIqj7mq*VZWr_f+nA|!79!S^_aof+olV-i}S3w_9V0@2y(e@nV;zP z#gUA;-WH-FBXDKCG7gmt6;eo-l6ev0rlzWjLLITR;$I;r2T34)N^A;L(NJwHW?-7f z2RC|5sv6=i+sH|s`#2AhHV<~IrTO_=hIf-v)gN#($bPLzxMd6u>~{dEJX3BL__`M~ zX82jS!kE4;J~FA&{!kt^MzP>~_PaacIfK8bJ9?ZCF@(tGY}=<#ep?aS zSKGf+-ir5)Mf*(xJwq^7Q1V+NGc+fRWn^Tax=evVKyiDg?wYh69>4tJVZ+!rsq%0# zVN%q|`L~TFQLs|=8+VA1u8w55F20;yZv2LNB&|hDGafAVGY~KLg3YwI@ad(M^|h_qoHi4@s`F>7 zJ!*ft3(u@Xu-A=@u3xFXq%b-dy`7hkoa`!bd3_A$4{Ivig#Oq2sHcS;Js)#caAQ+X zvdE-=vhyiLk2f@d8zdrK(sBz!`hYNSb0j|H(aXj+GwnFwi=)dT6;dM+?D-Cmz3`$Iyt9^NRPO?lIhx^fdj?FnQ;xzhEUP?Y>96f+N+0RQl-@N+P>?*Cw z;6Q8xh{HwY_GOi-UdbU(yuZ)W+z)ENFC@MLUg3-e%XcSUGu67oGhH|y7 zCs!VWOlPH6(CHt7775;eaGTnI+f)^U1mg^?1nQC_MSqq$VazqZ?YzK{5bLduZzdIo zu^;Cz4whL&ME;Jjz4R=Oh4pm2Gxqe>n(ElaV1LU|1<0R;ll@D$j{tAF(xh|a@lR3>7~IdHoZyw^;|Rvuu*)wBK(-9l#AQ1 z&(70pZ=T(NOmTx{wWrTC)<43M=tK%C8XDO|N#73nWKgXfn}49ayIl zeZL>O^xA)&@)^1RtAQlH!UWClL;ZjHF;`GhndDk}1D#4*@uO&BV@RHVUNnlPi0s>$B3sW;%^k`XbsC>_Me;=C_ zb|`{d^A_vRGSYp~es4uRzqdX3w0mtzV4f6?9wXJt7SXz5v6Hra zp493Y){M>z-Trkl5+C)sh(B-9Yjt#}XC-;ZGWwsnjk`6TL@U-j>1#XZ4(D4Tp-;b6 zYFl&ji;FbWvy!T#E?exlieFc7mI)_)uDh(=`SP`yQ3 za=7!(?2OEFztyYsl0l255u#7|HXTf5k?Sht{xp&y1}cjSA?)q8*Im1KglH)6SXPtv z#Hw<2Qq`$jEXQpZ(m(9Y{z}8c+(^z@Om=QjJ_VJ}#&3OUB@4XdC{jW~DMeqOtbVD% zS1a87XVNLpMj71&NiFIFWwt7L8S#XbmurJqOoy^!!mR2Y0V2;WXJYCbwYuuw)keMh zz;`z!`p0>2J$4mOfITDo=2QyP* zElPQ|*n3t~tn2bY;sVq3R|N$Rm91N&wDk_p-D@k5=E_;7 z{6iTco=USbsnQHG!%zGt19z&}4P+X#bKZw!I1Rlgetk2B{|{>ntsKCwYv5pgE4?6C zH?E08V7Dqzoj|OHO(JKU=Zf2L<0Bq!R#v%2JXix^oB93RcgASz>l2el^Z6RJ$YJw3 z6=)pP5Kp3owUP{(lZ{5ELa!qOw&)aJl}}Zy{=T?d<1lPNqs5UoeZ?esuj#OS`79t7 za3wM_ANBt6mO_ANBEGx8z0hANWdZ^k=WbF~C-oqy^CT{cdcpISEF(VZG%+Dz65VR&{GXI@nTHPtS9{P^&g zw;g!`>*m|HI9OP3v4S%wD&<|so{Ed(Vqv|+nZ3k~g@twc@*4bp`Em6rEUd>^C-C4e zCr|dt_XM6yD@^ZE3+sqW5{iUL(grpFSNBw1nOV0n(s6<#T0s z&%@d1CP{I$m4%GV>lU)T^-yoFT~i^e#h!(Mki$RvmV*Z*wrORu$e4dO}rbASo39SbEtHP0^3@}n`LTtHD|S)jb_tVe4AT= zc%yvA-AUqg#z#~3o(LwBmY5BqWDToXf~%GGuZv80JQ|tW4(d}j4NEOcj)u{1rVAAC z_-u5f4*&edhxiA6!*uk*R&ni(B6yW%Ywk7{)(M@qK5^#Sx#G> zu0S%b%eO)DA}bC}Mu!RnZHdIkMn+Ugxu=^JM(ua#Vjh`7h@-s8*x9{e*)$^!yTRG3 zG~;%Mw1pSWK|is=cG5-b{(NJCN1CaA3KQEEa&#}#B??=CoV{QwpS^Zrio0j(qQAG~ zsdI14Ym36Q^-C4^?O^X=x6Di(<1|U(vl;03{8kt0b@=0|XQXQHAc3?x{$*LkwJ+RQD6*VljA__n>h9mQ!y=NnPT9jT$OKu0iqdIhZ7ON&nE zgQcP%=eW|+pYxOrsO`bIpk(@@BburK!@V)Nej~2E!RwNkhvBA7#7U=47rTN2dveP+ zNJ(zNal*~HR-QdSURJfz=M}rFTBWv~-^X0HM(tx9$sPCf5?fVHS;@(%BvinGdbOL* zv0kQ|Z|`OAfZ2HTT9g>O$;e*nc-IRJ^hAEDFRGztn2C+;q3VP6=6($odCX(-2J@6a zEMqYT-K+r?7M|BLfhV$#sHk-XQl6OsAF_1oF}t~|pQ0TGCQtDVtj?`6Rt+C%m3*gd zi(;P(HW@8L7W9vqR<0wMqxfu0+SMy|25qYLE#|Iu4>B1aUq5Oi3?v>WpTU0U|Y!VgZ%gQ^Mk57IKYbRr!8AwY@)8gKmk#QxpabUK!>pP$9 zw8GSa<3(;ExCzeg&9Pnm0}HPv!<0&(N0^FIKjbO6{x<58*D~*lG^zWpZ8bn zmK+?iTQByMR92dFkrg>k*$*3|G)g!7R4Sdj8JQ{`<=sK&gsPSvk{6hw##zNw*iM#O zk1oYzRm2sG=pOE{qnEbprcQMyIc>)0u#X%iXr0np31^)pI}Ja!NKYp0f~UDYfSqZh z{xTL;wNG+}&BO`JN=5nKtiS)|!uA!EkvUX^*G?s5NnifoNzq_Dvp#8|cwhc0R1;6VqotlcbZqO?uV!OtplmZpP1KIi{E1D3QZpNXb?)vt=cx}Z z4H|5j@s4#RRPBd7=Os$!GW+`a+!eeuV3EhX+`achBx|Q|E+HHTb1&XtyVhHwKY2vu zOD?TGJ}`99*iN3NQnuqC!>cIMop}FE#{`ic?>MYO4xE41A$a?+G@h%B^YhK@Wsy78 z#^R7WedW%`%(Szvm#K>d5L&tP2h_p#5*O?+C8bF@IdSER8X6j3gWwC_G9`(h7%#D~ zim61k-7u3E6BA?3NJ;t3t*e})=w-7|+|qYmPTqRHL$h_U_u}^7k2!cBiH$~zbJPUO zw6ePiG3)EZrhYfoR)f>_2kgzc;H8S}*WF3`n?ED(Z++?dX)>N#%%O3?hfj09d3W5< z$S4xk^)WoXOCTNoa0YWOKZRw}@sUkH ToNpQa1?!ohgg_?$OPBuzW&tDm literal 0 HcmV?d00001 diff --git a/docs/screenshots/skills-console.png b/docs/screenshots/skills-console.png new file mode 100644 index 0000000000000000000000000000000000000000..d38bd244cd8d91a339a26707df9b350d173d0a3f GIT binary patch literal 53445 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

II7|s5$xIPu62vhxcV^Vqc0}HDDr`eUaRk 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 Containers). Each entry carries full metadata: + installer, launcher, health probe, configuration, export rules, + capability mapping. + - Modular per-layer registry: ai_lsc/registry/layers/*.py -- adding a + tool means adding a dict entry, not touching Python logic. + - Registry auto-merges new keys across releases without user action. + +Stack Templates + - Template system expresses infrastructure intent, not install scripts. + - 4 included templates (Claude Code Setup, Agentic OS Stack, + SaaS Integrations, Free Claude Code). + - Templates reference tool IDs; the registry provides all install and + launch logic. Zero duplication. + - Stack Wizard UI for template selection and deployment. + +Runtime + - Multi-runtime execution: native, Podman, Docker Compose, LXC. + - RuntimeExecutor unifies install/start/stop/health across all targets. + - Container export generates Podman Quadlet, Docker Compose, or LXC + config from a template -- same template, different output format. + - Fixed LXC config path bug (Path string concat) and hardcoded + /mnt/AI mount targets. + +Bootstrap + - Fully portable: extracts anywhere, detects parent directory tree, + auto-resolves base dir. No assumptions about install location. + - Arch Linux: --system-site-packages venv sees pacman-installed + PySide6, avoids pip compile hell. + - Python version stamping detects stale venv after pacman -Syu, + auto-recreates. + - Cleans stale ~/.local/bin/ai-lsc and pipx installs from v2.x. + - python-pyside6 availability check before attempting pacman install + (package not in official Arch repos). + +Installer + - Supports pacman, apt, dnf, pip, git clone, npm, and manual installers. + - Dependency expansion: installing a template auto-detects and installs + missing prerequisite tools. + - License gate: tools requiring license acceptance prompt before install. + +Verification + - Per-tool health probes: process check, port check, API ping. + - Verification dashboard shows install status for all 115 tools. + - Hardware detection: GPU driver, CUDA version, memory, disk. + +UI + - PySide6 dark-themed interface with sidebar navigation across all + 13 layers. + - Dashboard with live service status, log feed, and system health. + - Infrastructure layer pages with per-tool ServiceRow widgets. + - Code analysis panel: ripgrep, fd, AST inspection, tree-sitter parsing. + - Skills console with modelfile tree browser and model pull. + - IPC stack editor for pipeline visualization. + - Settings page with base directory configuration. + - Fixed 8 NameError crashes in exception handlers (except without as). + - Fixed thread-unsafe UI mutation from background install thread. + - Fixed stack wizard KeyError on missing metadata fields. + +Skills + - Skill definitions as JSON manifests with capability requirements. + - SkillRuntimeResolver maps skill requests to available capabilities. + - 6 included skills (code-reviewer, vector-search, rag-analyst, + stack-operator, agent-orchestrator, redis-operator). + +Agents (infrastructure only -- deferred to v4.0) + - Redis pub/sub bridge for inter-agent communication. + - Tool bridge connecting agent function-calling to RuntimeExecutor. + - Ollama tools interface for model management. + - Model pool with tier routing (8B/14B/32B/70B). + - Dispatcher and clarification gate for multi-turn agent loops. + - All symbols safely stubbed; no agent execution in v3.0. + +Bug fixes from v2.4 + - Resolved externally-managed-environment error on Arch (venv isolation) + - Removed ModuleNotFoundError from stale ~/.local/bin/ai-lsc entry point + - Root launcher (ai_lsc.py) replaces pip entry-point -- no install needed + - Convenience launcher (run.sh) sources .env for proper env injection + - Path("/var/lib/lxc" / name) string concat crash -> proper Path join + - 8x except Exception without as exc -> all now capture correctly + - Thread-unsafe _run_install UI calls -> QTimer.singleShot dispatch + - Hardcoded /mnt/AI LXC mount targets -> dynamic path resolution + - Stack wizard meta['name'] KeyError -> .get() with safe defaults + - python-pyside6 pacman fallback for Arch repos that don't carry it + +Files changed: essentially everything. See ADR-001 for the architectural +rationale and the vocabulary that will govern v3.0 stabilization and +v4.0 development. +``` \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..dc2becb --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,76 @@ +[build-system] +requires = [ + "setuptools>=80", + "wheel", +] +build-backend = "setuptools.build_meta" + +[project] +name = "ai-lsc" +version = "3.0.5" +description = "AI Local Stack Control — PySide6 desktop app for orchestrating local AI/ML tool stacks" +readme = "README.md" +license = {text = "MIT"} +requires-python = ">=3.11" +authors = [ + {name = "AI-LSC Contributors"}, +] +keywords = [ + "ai", "llm", "local-ai", "stack-management", "pyside6", + "ollama", "vllm", "container-management", "iac", + "terraform", "pulumi", "opentofu", "crossplane", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Environment :: X11 Applications :: Qt", + "Framework :: PySide6", + "Intended Audience :: Developers", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: System :: Systems Administration", +] + +dependencies = [ + "PySide6>=6.6", + "psutil>=5.9", +] + +[project.optional-dependencies] +gpu-nvidia = ["cupy-cuda12x"] +gpu-amd = ["cupy-rocm"] +dev = [ + "pytest>=7.0", + "pytest-cov>=4.0", + "mypy>=1.0", + "ruff>=0.1", +] + +[project.scripts] +ai-lsc = "ai_lsc.__main__:main" + +[tool.setuptools.packages.find] +where = ["src"] +include = ["ai_lsc*"] + +[tool.ruff] +target-version = "py311" +line-length = 100 + +[tool.ruff.lint] +select = ["E", "F", "W", "I", "N", "UP"] + +[tool.mypy] +python_version = "3.11" +warn_return_any = true +warn_unused_configs = true +ignore_missing_imports = true + +[tool.pytest.ini_options] +testpaths = ["tests"] +python_files = ["test_*.py"] +python_classes = ["Test*"] +python_functions = ["test_*"] diff --git a/quickstart.md b/quickstart.md new file mode 100644 index 0000000..443ea8d --- /dev/null +++ b/quickstart.md @@ -0,0 +1,224 @@ +# Quickstart Guide + +Get AI Local Stack Control up and running in under 5 minutes. + +## Prerequisites + +| Requirement | Minimum | Recommended | +|-------------|---------|-------------| +| OS | Arch Linux | Arch Linux / EndeavourOS | +| Python | 3.11 | 3.12+ | +| RAM | 8 GB | 16 GB+ (for LLM inference) | +| Disk | 4 GB free | 20 GB+ (for model storage) | +| GPU | None | NVIDIA (CUDA) or AMD (ROCm) | + +## Installation + +### Option 1: Bootstrap Script (Recommended) + +```bash +# Clone the repository +git clone https://github.com/your-username/ai-lsc.git +cd ai-lsc + +# Run the bootstrap script (installs system + Python deps) +chmod +x bootstrap.sh +./bootstrap.sh + +# Launch the application +python -m ai_lsc +``` + +### Option 2: Manual Install + +#### Step 1: System Dependencies + +```bash +# Core packages (Arch Linux) +sudo pacman -S python python-pip python-pyqt6 pyside6 \ + git tmux ripgrep fd tree-sitter sqlite redis + +# Optional: GPU support +sudo pacman -S cuda # NVIDIA +# sudo pacman -S rocm-hip-sdk # AMD + +# Optional: Container runtimes +sudo pacman -S podman docker +# Optional: LXC support +sudo pacman -S lxc lxcfs +``` + +#### Step 2: Python Dependencies + +```bash +cd ai-lsc + +# Create a virtual environment (recommended) +python -m venv .venv +source .venv/bin/activate + +# Install PySide6 and dependencies +pip install PySide6 +pip install -e . +``` + +#### Step 3: Verify Installation + +```bash +# Check that the registry loads correctly +python -c " +from ai_lsc import DEFAULT_REGISTRY, validate_registry +errors = validate_registry(DEFAULT_REGISTRY) +print(f'Registry loaded: {len(DEFAULT_REGISTRY)} tools') +print(f'Validation errors: {len(errors)}') +" + +# Expected output: +# Registry loaded: 115 tools +# Validation errors: 0 +``` + +#### Step 4: Launch + +```bash +python -m ai_lsc +``` + +## First Launch + +When you launch AI-LSC for the first time, you will see the **Stack Template Wizard**. This is your entry point for configuring your AI stack. + +### Choosing a Template + +| Template | Best For | Tool Count | +|----------|----------|-----------| +| Claude Code Setup | Claude Code development workflow | 11 | +| Free Claude Code | Minimal Claude Code environment | 4 | +| Local LLM Lab | Self-hosted LLM experimentation | 10 | +| SaaS Integrations | Production deployment with SSL/CDN | 12 | + +### Manual Configuration + +If you prefer to build your stack from scratch: + +1. Select **Create From Scratch** in the wizard +2. Navigate to the **Infrastructure** section in the sidebar +3. Expand each layer and toggle tools on/off +4. Use the **IPC Stack** tab to validate dependencies +5. Click **Compile** to save your stack configuration + +## Post-Setup + +### Installing a Base LLM + +Most tools depend on Ollama as the local LLM runtime: + +```bash +# Install Ollama (if not already installed) +curl -fsSL https://ollama.com/install.sh | sh + +# Pull a model +ollama pull llama3 +ollama pull codellama # Good for coding assistance +ollama pull mistral # Lightweight general-purpose +``` + +### Starting Services + +After configuring your stack in the IPC Stack tab: + +1. Click **Compile** to save the stack configuration +2. Switch to the **Monitor** tab +3. Click **Start All** or start individual services +4. Check service status indicators (green = running) + +### Connecting the Chat Console + +Once Ollama is running: + +1. Navigate to the **Chat** section +2. Select a model from the dropdown (e.g., `llama3`, `codellama`) +3. Start chatting with your local AI assistant + +## Common Tasks + +### Adding a New Tool + +1. Identify the target layer in `registry/layers/` +2. Add the tool entry following the canonical schema +3. Restart the application — the tool appears automatically + +### Exporting to Containers + +1. Open **Deployment Targets** from the sidebar +2. Select your backend: Podman, Docker, or LXC +3. Click **Export** to generate configuration files +4. Deploy with `podman compose up` or `lxc-launch.sh` + +### Managing LXC Containers + +```bash +# Create a container from exported config +sudo lxc-create -n ollama -f ollama.conf + +# Start the container +sudo lxc-start -n ollama + +# Attach to the container console +sudo lxc-attach -n ollama + +# Freeze/unfreeze +sudo lxc-freeze -n ollama +sudo lxc-unfreeze -n ollama + +# Destroy +sudo lxc-stop -n ollama +sudo lxc-destroy -n ollama +``` + +## Troubleshooting + +### PySide6 Import Error + +``` +ModuleNotFoundError: No module named 'PySide6' +``` + +**Fix:** Install PySide6: `pip install PySide6` + +### Registry Loading Errors + +``` +ERROR: Failed to load layer file: SyntaxError +``` + +**Fix:** Validate layer files: +```bash +python3 -c " +import ast, os +for f in os.listdir('ai_lsc/registry/layers'): + if f.endswith('.py') and f != '__init__.py': + ast.parse(open(f'ai_lsc/registry/layers/{f}').read()) + print(f'{f}: OK') +" +``` + +### Service Won't Start + +1. Check the **Monitor** tab for error messages +2. Verify the tool is installed: `which ` +3. Check launcher command in the registry entry +4. For systemd services: `systemctl --user status ` + +### Ollama Connection Refused + +1. Ensure Ollama is running: `ollama serve` or `systemctl --user start ollama` +2. Check port: `curl http://localhost:11434/api/tags` +3. Verify the endpoint in Settings matches your Ollama port + +## Next Steps + +- Explore the **Infrastructure** section to understand the 13-layer architecture +- Try different **Stack Templates** to find the right combination for your workflow +- Set up the **Skills Console** to extend your tool capabilities +- Use **Code Analysis** to inspect and understand your project dependencies diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..90b4852 --- /dev/null +++ b/run.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# ────────────────────────────────────────────────────────────── +# AI-LSC v3.0 — Quick launch script +# +# Usage: +# bash run.sh # activates venv, launches GUI +# bash run.sh --headless # activates venv, runs without GUI +# ────────────────────────────────────────────────────────────── +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +VENV_DIR="${SCRIPT_DIR}/.venv" +VENV_PYTHON="${VENV_DIR}/bin/python" + +# ── Load .env for AI_LSC_BASE_DIR ──────────────────────────────── +_ENV_FILE="${SCRIPT_DIR}/.env" +if [ -f "$_ENV_FILE" ]; then + set -a # auto-export all variables + source "$_ENV_FILE" + set +a +fi + +# ── Ensure venv exists ──────────────────────────────────────── +if [ ! -f "$VENV_PYTHON" ]; then + echo "[ERROR] Virtual environment not found at ${VENV_DIR}" + echo " Run first: bash bootstrap.sh" + exit 1 +fi + +# ── Detect stale venv (Python version mismatch after pacman upgrade) +if [ -f "${VENV_DIR}/.python-version-stamp" ]; then + STAMP="$(cat "${VENV_DIR}/.python-version-stamp")" + SYS_VER="$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')")" + if [ "$STAMP" != "$SYS_VER" ]; then + echo "[WARN] Virtual environment is stale (venv: ${STAMP}, system: ${SYS_VER})" + echo " Run: bash bootstrap.sh" + exit 1 + fi +fi + +# ── Check for leftover ~/.local/bin/ai-lsc from old installs +STALE_BIN="${HOME}/.local/bin/ai-lsc" +if [ -f "$STALE_BIN" ]; then + echo "[WARN] Found stale entry-point at ${STALE_BIN}" + echo " This is from a previous pip/pipx install. Remove it:" + echo " rm -f ${STALE_BIN}" + echo "" +fi + +# ── Launch ──────────────────────────────────────────────────── +echo " Base dir: ${AI_LSC_BASE_DIR:-/mnt/AI}" +echo " Project : ${SCRIPT_DIR}" +echo "" + +if [ "${1:-}" = "--headless" ]; then + exec "$VENV_PYTHON" -c " +import sys +sys.path.insert(0, '${SCRIPT_DIR}/src') +from ai_lsc.constants import APP_DISPLAY_NAME, CANONICAL_BASE_DIR +print(f'{APP_DISPLAY_NAME}') +print(f' Base dir: {CANONICAL_BASE_DIR}') +" +else + exec "$VENV_PYTHON" "${SCRIPT_DIR}/ai_lsc.py" "$@" +fi diff --git a/src/ai_lsc/__init__.py b/src/ai_lsc/__init__.py new file mode 100644 index 0000000..2888355 --- /dev/null +++ b/src/ai_lsc/__init__.py @@ -0,0 +1,151 @@ +""" +AI Local Stack Control v3.0 — Release codename: Ankh of Jah. + +Extracted from the monolithic ``ai_lsc_v11.py`` in incremental phases. +Currently contains: + +* **Phase 0** — constants, typed data structures, the 13-layer registry + system, and utility modules. +* **Phase 1** — chat API worker, skill runtime resolver, stack export / + container backend, and manifest support. +* **Phase 2** — LXC container backend, stack template system. +* **Phase 3** — Expanded IaC registry (Pulumi, SST, Bicep, OpenTofu, + AWS CDK, Crossplane, Terragrunt). +* **v3.0** — Verification UI, ollama server path detection, packaging + overhaul, agentic layer deferred to v4.0. + +All with **zero behavioural change** from the original monolith. + +Public API +---------- +The ``__init__.py`` re-exports the most commonly used symbols so that +existing code can do:: + + from ai_lsc import BASE_DIR, DEFAULT_REGISTRY, RegistryManager + +instead of reaching into sub-packages. +""" + +# ── Constants ───────────────────────────────────────────────────────── +from ai_lsc.constants import ( + APP_CODENAME, + APP_DISPLAY_NAME, + APP_VERSION, + BASE_DIR, + CONFIG_FILE, + APP_ICON_FILE, + STATE_FILE_NAME, + PIPELINE_FILE_NAME, + STACK_SCHEMA_VERSION, + MANIFEST_FILE_NAME, + JCL_FILE_NAME, + REQUIRED_DIRS, + DEFAULT_PORTS, + STATUS_STYLES, + LOG_SOURCE_COLORS, + LOG_COLOR_DEFAULT, + SERVICE_LICENSES, + TREE_SKIP_PATTERNS, + NAV_LAYER_ORDER, + GLOBAL_STYLE, + SIDEBAR_TREE_STYLE, + MODEL_TIERS, + OLLAMA_SERVER_CANDIDATES, +) + +# ── Types ───────────────────────────────────────────────────────────── +from ai_lsc.types import ( + InstallerType, + LauncherType, + InstallerSpec, + LauncherSpec, + ToolFlags, + ToolMetadata, + FilesystemSpec, + VerifyCheck, + VerificationResult, + PreflightResult, + ServiceState, + PipelineState, +) + +# ── Registry ────────────────────────────────────────────────────────── +from ai_lsc.registry.defaults import DEFAULT_REGISTRY +from ai_lsc.registry.manager import RegistryManager +from ai_lsc.registry.stack_templates.manager import StackTemplateManager +from ai_lsc.registry.validator import validate_registry + +# ── Utils ───────────────────────────────────────────────────────────── +from ai_lsc.utils.paths import build_path_tree, resolve_launcher_cmd +from ai_lsc.utils.process import ( + enriched_env, + find_binary, + run_subprocess, + first_matching_process, + cpu_load_for_processes, +) +from ai_lsc.utils.filesystem import ensure_base_dirs, walk_tree +from ai_lsc.utils.logging import setup_logging, get_logger +from ai_lsc.utils.ollama import ( + detect_ollama_server_dir, + ollama_binary, + ollama_env, + ollama_is_installed, + ollama_models_dir, +) + +# ── Chat API (requires PySide6) ─────────────────────────────────────── +try: + from ai_lsc.chat.api import WorkerSignals, ApiRunnable +except ImportError: + WorkerSignals = None # PySide6 not installed + ApiRunnable = None + +# ── Skills ────────────────────────────────────────────────────────────── +from ai_lsc.skills.resolver import SkillRuntimeResolver + +# ── Stack export ─────────────────────────────────────────────────────── +from ai_lsc.stack.export import build_stack_spec, ContainerBackend + +# ── Manifest support ──────────────────────────────────────────────────── +from ai_lsc.manifest.support import ManifestSupport + +# ── Agents: DEFERRED to v4.0 ────────────────────────────────────────── +# The agentic tool-use bridge (ToolBridge, AgentLoop, AgentOrchestrator, +# etc.) has been removed from the v3.0 release. It will return in +# v4.0 with a redesigned architecture. + +__all__ = [ + # Constants + "APP_VERSION", "APP_CODENAME", "APP_DISPLAY_NAME", + "BASE_DIR", "CONFIG_FILE", "APP_ICON_FILE", + "STATE_FILE_NAME", "PIPELINE_FILE_NAME", "STACK_SCHEMA_VERSION", + "MANIFEST_FILE_NAME", "JCL_FILE_NAME", "REQUIRED_DIRS", + "DEFAULT_PORTS", "STATUS_STYLES", "LOG_SOURCE_COLORS", + "LOG_COLOR_DEFAULT", "SERVICE_LICENSES", "TREE_SKIP_PATTERNS", + "NAV_LAYER_ORDER", "GLOBAL_STYLE", "SIDEBAR_TREE_STYLE", + "MODEL_TIERS", "OLLAMA_SERVER_CANDIDATES", + # Types + "InstallerType", "LauncherType", "InstallerSpec", "LauncherSpec", + "ToolFlags", "ToolMetadata", "FilesystemSpec", "VerifyCheck", + "VerificationResult", "PreflightResult", "ServiceState", "PipelineState", + # Registry + "DEFAULT_REGISTRY", "RegistryManager", "StackTemplateManager", "validate_registry", + # Utils + "build_path_tree", "resolve_launcher_cmd", + "enriched_env", "find_binary", "run_subprocess", + "first_matching_process", "cpu_load_for_processes", + "ensure_base_dirs", "walk_tree", + "setup_logging", "get_logger", + # Ollama helpers + "detect_ollama_server_dir", "ollama_binary", "ollama_env", + "ollama_is_installed", "ollama_models_dir", + # Chat API + "WorkerSignals", "ApiRunnable", + # Skills + "SkillRuntimeResolver", + # Stack export + "build_stack_spec", "ContainerBackend", + # Manifest + "ManifestSupport", +] diff --git a/src/ai_lsc/__main__.py b/src/ai_lsc/__main__.py new file mode 100644 index 0000000..a0f37c3 --- /dev/null +++ b/src/ai_lsc/__main__.py @@ -0,0 +1,35 @@ +"""AI Local Stack Control — console entry point. + +Invoked via the ``ai-lsc`` script (registered in pyproject.toml) or +``python -m ai_lsc``. Launches the PySide6 desktop application. +""" + +import sys + + +def main() -> int: + """Launch the AI-LSC desktop application and return the exit code.""" + # PySide6 is a required dependency as of v3.0 — if it's missing we fail + # loudly rather than falling back to a degraded mode. + try: + from PySide6.QtWidgets import QApplication + except ImportError: + print( + "PySide6 is required but not installed.\n\n" + " source .venv/bin/activate\n" + " pip install PySide6>=6.6\n\n" + " Or re-run: bash bootstrap.sh", + file=sys.stderr, + ) + return 1 + + from ai_lsc.ui.main_window import AILocalStackControl + + app = QApplication.instance() or QApplication(sys.argv) + window = AILocalStackControl() + window.show() + return app.exec() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/ai_lsc/agents/__init__.py b/src/ai_lsc/agents/__init__.py new file mode 100644 index 0000000..ed3ace8 --- /dev/null +++ b/src/ai_lsc/agents/__init__.py @@ -0,0 +1,45 @@ +""" +AI-LSC — Agentic orchestration package. + +**DEFERRED to v4.0** — This package is preserved for reference but is not +imported or used in v3.0 (Ankh of Jah). The agentic tool-use bridge will +return in v4.0 with a redesigned architecture. + +All symbols are set to ``None`` so that existing code referencing them +gracefully degrades rather than raising ``ImportError``. +""" + +from __future__ import annotations + +# All agent symbols set to None for v3.0 — will be reactivated in v4.0 +ToolBridge = None +AgentDispatcher = None +AgentLoop = None +EnhancedSkillResolver = None +AgentOrchestrator = None +OrchestratorResult = None +WarmModelPool = None +ClarificationGate = None +ClarificationDecision = None +SkillInjector = None +RedisBridge = None +QdrantBridge = None +LiteLLMConfigGenerator = None +LibreChatConfigGenerator = None + +__all__ = [ + "ToolBridge", + "AgentDispatcher", + "AgentLoop", + "EnhancedSkillResolver", + "AgentOrchestrator", + "OrchestratorResult", + "WarmModelPool", + "ClarificationGate", + "ClarificationDecision", + "SkillInjector", + "RedisBridge", + "QdrantBridge", + "LiteLLMConfigGenerator", + "LibreChatConfigGenerator", +] diff --git a/src/ai_lsc/agents/agent_loop.py b/src/ai_lsc/agents/agent_loop.py new file mode 100644 index 0000000..d9d1d8e --- /dev/null +++ b/src/ai_lsc/agents/agent_loop.py @@ -0,0 +1,207 @@ +""" +AI-LSC — Standalone headless agent execution loop. + +Implements the multi-turn observation/action cycle for autonomous +agent execution without a GUI. The loop: + + 1. Sends user message + tool schemas to Ollama + 2. Receives response (may contain tool_calls) + 3. Executes tool_calls via AgentDispatcher + 4. Sends tool results back to Ollama + 5. Repeats until the model stops making tool calls + +This enables headless operation where AI-LSC agents can orchestrate +the stack autonomously — e.g., "set up my RAG pipeline" would +trigger: start qdrant → pull embedding model → inject rag skill → +open webui. + +Usage +----- + loop = AgentLoop(dispatcher, ollama_port=11434, model="qwen2.5:72b") + result = loop.run("Start the vector database and pull embedding model") +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + +# Safety limit: max tool-call rounds per user message +MAX_ROUNDS: int = 20 + + +class AgentLoop: + """Headless multi-turn agent execution loop. + + Parameters + ---------- + dispatcher : + An ``AgentDispatcher`` for executing tool calls. + ollama_port : + Port of the Ollama API server. + model : + Default model to use for agent conversations. + system_prompt : + Optional system prompt injected at the start. + timeout : + HTTP timeout per Ollama call in seconds. + max_rounds : + Maximum tool-call rounds before forcing a stop. + """ + + def __init__( + self, + dispatcher: Any, # AgentDispatcher + ollama_port: int = 11434, + model: str = "qwen2.5:32b", + system_prompt: str = "", + timeout: float = 300.0, + max_rounds: int = MAX_ROUNDS, + ) -> None: + self.dispatcher = dispatcher + self.base_url = f"http://127.0.0.1:{ollama_port}" + self.model = model + self.system_prompt = system_prompt + self.timeout = timeout + self.max_rounds = max_rounds + self.conversation_history: list[dict[str, str]] = [] + self._tool_schemas: list[dict[str, Any]] = [] + + def set_tool_schemas( + self, schemas: list[dict[str, Any]], + ) -> None: + """Set the tool schemas available to the agent.""" + self._tool_schemas = schemas + + # ── Main execution ──────────────────────────────────────────────── + + def run( + self, + user_message: str, + model: str | None = None, + ) -> dict[str, Any]: + """Execute an agent task end-to-end. + + Parameters + ---------- + user_message : + The task description from the user. + model : + Override the default model for this run. + + Returns + ------- + dict with ``final_response``, ``tool_calls_made``, ``rounds``. + """ + use_model = model or self.model + all_tool_calls: list[dict[str, Any]] = [] + + # Build initial messages + messages: list[dict[str, str]] = [] + if self.system_prompt: + messages.append({"role": "system", "content": self.system_prompt}) + messages.append({"role": "user", "content": user_message}) + + for round_num in range(self.max_rounds): + logger.info( + "Agent round %d/%d — model: %s", + round_num + 1, self.max_rounds, use_model, + ) + + # Call Ollama + response = self._call_ollama(messages, use_model) + if response is None: + break + + assistant_msg = response.get("message", {}) + content = assistant_msg.get("content", "") + tool_calls = assistant_msg.get("tool_calls", []) + + messages.append(assistant_msg) + + # No tool calls → agent is done + if not tool_calls: + logger.info( + "Agent finished after %d rounds", round_num + 1, + ) + self.conversation_history = messages + return { + "final_response": content, + "tool_calls_made": all_tool_calls, + "rounds": round_num + 1, + "model": use_model, + } + + # Execute each tool call + for tc in tool_calls: + func = tc.get("function", {}) + tc_name = func.get("name", "unknown") + tc_args = json.loads(func.get("arguments", "{}")) + + logger.info("Executing tool: %s(%s)", tc_name, tc_args) + result = self.dispatcher.execute_tool_call({ + "name": tc_name, + "arguments": tc_args, + }) + + all_tool_calls.append({ + "name": tc_name, + "arguments": tc_args, + "result": result, + }) + + # Send tool result back to Ollama + messages.append({ + "role": "tool", + "content": json.dumps(result), + }) + + # Max rounds reached + self.conversation_history = messages + return { + "final_response": "(Agent hit max rounds limit)", + "tool_calls_made": all_tool_calls, + "rounds": self.max_rounds, + "model": use_model, + } + + # ── Ollama HTTP ───────────────────────────────────────────────── + + def _call_ollama( + self, + messages: list[dict[str, str]], + model: str, + ) -> dict[str, Any] | None: + """Send a chat request to Ollama. Returns parsed response.""" + payload: dict[str, Any] = { + "model": model, + "messages": messages, + "stream": False, + } + if self._tool_schemas: + payload["tools"] = self._tool_schemas + + try: + data = json.dumps(payload).encode("utf-8") + req = urllib.request.Request( + f"{self.base_url}/api/chat", + data=data, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen( + req, timeout=self.timeout + ) as resp: + return json.loads(resp.read().decode("utf-8")) + except urllib.error.URLError as exc: + logger.error("Ollama connection failed: %s", exc) + return None + except Exception as exc: + logger.error("Agent loop error: %s", exc) + return None diff --git a/src/ai_lsc/agents/clarification_gate.py b/src/ai_lsc/agents/clarification_gate.py new file mode 100644 index 0000000..d8bd117 --- /dev/null +++ b/src/ai_lsc/agents/clarification_gate.py @@ -0,0 +1,265 @@ +""" +AI-LSC — Confidence-gated clarification gate. + +Implements a three-tier clarification strategy that avoids interrupting +the user for obvious tasks while ensuring ambiguous requests get proper +scoping: + + 1. **Skip** (confidence >= 0.95): Execute immediately, no questions. + 2. **Quick confirm** (confidence >= 0.70): Ask a single yes/no before proceeding. + 3. **Full clarification** (confidence < 0.70): Ask up to 6 focused questions. + +The gate uses the 8B classifier model to estimate intent confidence, +then routes through the appropriate path. + +Usage +----- + gate = ClarificationGate(ollama_port=11434) + decision = gate.evaluate("start qdrant on port 6333") + # → ClarificationDecision(mode="skip", ...) +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request +from dataclasses import dataclass, field +from typing import Any + +from ai_lsc.constants import ( + CLARIFICATION_CONFIRM_THRESHOLD, + CLARIFICATION_SKIP_THRESHOLD, +) +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +@dataclass +class ClarificationDecision: + """Result of the clarification gate evaluation.""" + + mode: str # "skip", "confirm", "clarify" + confidence: float + intent: str + tool_id: str = "" + arguments: dict[str, Any] = field(default_factory=dict) + question: str = "" # for "confirm" mode + questions: list[dict[str, str]] = field(default_factory=list) # for "clarify" mode + + def to_dict(self) -> dict[str, Any]: + return { + "mode": self.mode, + "confidence": round(self.confidence, 3), + "intent": self.intent, + "tool_id": self.tool_id, + "arguments": self.arguments, + "question": self.question, + "questions": self.questions, + } + + +class ClarificationGate: + """Confidence-gated clarification for agentic requests. + + Parameters + ---------- + ollama_port : + Port of the Ollama API server (classifier model). + classifier_model : + Small model used for intent classification (default 8B). + timeout : + HTTP timeout for classification calls. + """ + + def __init__( + self, + ollama_port: int = 11434, + classifier_model: str = "qwen2.5:7b", + timeout: float = 30.0, + ) -> None: + self.base_url = f"http://127.0.0.1:{ollama_port}" + self.classifier_model = classifier_model + self.timeout = timeout + + # ── Main evaluation ──────────────────────────────────────────────── + + def evaluate( + self, + user_message: str, + available_tools: list[str] | None = None, + ) -> ClarificationDecision: + """Evaluate a user message and return a clarification decision. + + Parameters + ---------- + user_message : + The raw user request. + available_tools : + Known tool IDs to help with classification. + + Returns + ------- + A ClarificationDecision with the appropriate mode and data. + """ + classification = self._classify(user_message, available_tools) + + confidence = classification.get("confidence", 0.5) + intent = classification.get("intent", "unknown") + tool_id = classification.get("tool_id", "") + arguments = classification.get("arguments", {}) + + if confidence >= CLARIFICATION_SKIP_THRESHOLD: + return ClarificationDecision( + mode="skip", + confidence=confidence, + intent=intent, + tool_id=tool_id, + arguments=arguments, + ) + elif confidence >= CLARIFICATION_CONFIRM_THRESHOLD: + question = ( + f"I'll {intent} using {tool_id or 'the appropriate tool'}. " + f"Proceed?" + ) + return ClarificationDecision( + mode="confirm", + confidence=confidence, + intent=intent, + tool_id=tool_id, + arguments=arguments, + question=question, + ) + else: + questions = self._generate_questions( + user_message, intent, tool_id, available_tools + ) + return ClarificationDecision( + mode="clarify", + confidence=confidence, + intent=intent, + tool_id=tool_id, + arguments=arguments, + questions=questions, + ) + + # ── Classification ───────────────────────────────────────────────── + + def _classify( + self, + message: str, + tools: list[str] | None = None, + ) -> dict[str, Any]: + """Call the classifier model to extract intent, tool, and confidence.""" + tools_str = ", ".join(tools[:20]) if tools else "start_service, stop_service, check_service_status, pull_model, list_available_tools, inject_skill, open_web_interface, search_registry, install_tool" + + system_prompt = ( + "You are an intent classifier for the AI-LSC agentic system. " + "Analyze the user's request and respond with ONLY valid JSON:\n" + '{"intent": "", ' + '"tool_id": "", ' + '"arguments": {}, ' + '"confidence": <0.0-1.0 float>}\n\n' + f"Available tools: {tools_str}\n" + "Respond with JSON only, no explanation." + ) + + payload = json.dumps({ + "model": self.classifier_model, + "messages": [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": message}, + ], + "stream": False, + "options": {"temperature": 0.0}, + }).encode("utf-8") + + try: + req = urllib.request.Request( + f"{self.base_url}/api/chat", + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + data = json.loads(resp.read().decode("utf-8")) + content = data.get("message", {}).get("content", "") + # Parse JSON from the response (may be wrapped in markdown) + cleaned = content.strip() + if cleaned.startswith("```"): + cleaned = cleaned.split("\n", 1)[1] + if cleaned.endswith("```"): + cleaned = cleaned[:-3] + return json.loads(cleaned) + except (json.JSONDecodeError, urllib.error.URLError) as exc: + logger.warning("Classification failed: %s", exc) + except Exception as exc: + logger.error("Classifier error: %s", exc) + + return { + "intent": "unknown", + "tool_id": "", + "arguments": {}, + "confidence": 0.3, + } + + # ── Question generation ───────────────────────────────────────────── + + def _generate_questions( + self, + message: str, + intent: str, + tool_id: str, + tools: list[str] | None, + ) -> list[dict[str, str]]: + """Generate focused clarification questions for ambiguous requests. + + Returns up to 6 questions, each with a header and question string. + """ + # Seed questions based on intent category + seed_questions: list[dict[str, str]] = [] + + if not tool_id and tools: + seed_questions.append({ + "header": "Tool", + "question": f"Which tool should I use? Options: {', '.join(tools[:8])}", + }) + + if "start" in intent or "deploy" in intent: + seed_questions.extend([ + {"header": "Port", "question": "What port should the service listen on?"}, + {"header": "Config", "question": "Any specific configuration or model to use?"}, + ]) + elif "pull" in intent or "download" in intent: + seed_questions.append({ + "header": "Model", + "question": "Which specific model should I pull?", + }) + elif "search" in intent or "find" in intent: + seed_questions.extend([ + {"header": "Scope", "question": "What layer or category should I search in?"}, + {"header": "Filter", "question": "Any specific criteria (running only, web-enabled, etc.)?"}, + ]) + elif "analyze" in intent or "review" in intent: + seed_questions.extend([ + {"header": "Target", "question": "What file, directory, or service should I analyze?"}, + {"header": "Depth", "question": "How thorough should the analysis be (quick vs deep)?"}, + ]) + + # Fill remaining slots with general-purpose questions + general = [ + {"header": "Priority", "question": "How urgent is this task?"}, + {"header": "Output", "question": "What output format do you prefer (text, JSON, file)?"}, + {"header": "Scope", "question": "Should this affect the running pipeline?"}, + ] + + used_headers = {q["header"] for q in seed_questions} + for g in general: + if len(seed_questions) >= 6: + break + if g["header"] not in used_headers: + seed_questions.append(g) + used_headers.add(g["header"]) + + return seed_questions[:6] diff --git a/src/ai_lsc/agents/dispatcher.py b/src/ai_lsc/agents/dispatcher.py new file mode 100644 index 0000000..c9c92d6 --- /dev/null +++ b/src/ai_lsc/agents/dispatcher.py @@ -0,0 +1,272 @@ +""" +AI-LSC — Agent dispatcher. + +Bridges LLM tool_call JSON payloads to AI-LSC's RuntimeExecutor. +When an agent frontend (LibreChat, OpenWebUI) sends a tool_call +response, this dispatcher translates it into RuntimeExecutor calls. + +This module is in the ``agents`` package (allowed for urllib) because +it needs to make HTTP calls to Ollama's API for model pulls and status +checks that the RuntimeExecutor doesn't handle directly. + +Usage +----- + dispatcher = AgentDispatcher(runtime, registry_mgr, ollama_port) + result = dispatcher.execute_tool_call({ + "name": "start_service", + "arguments": {"tool_id": "qdrant"} + }) +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +class AgentDispatcher: + """Translates tool_call JSON into RuntimeExecutor method calls. + + Parameters + ---------- + runtime : + A ``RuntimeExecutor`` instance for process management. + registry_data : + The full registry dict from ``RegistryManager.get_all_tools()``. + active_tools : + Currently active tool IDs in the pipeline. + ollama_port : + Port of the Ollama API server. + """ + + def __init__( + self, + runtime: Any, # RuntimeExecutor — avoid circular import + registry_data: dict[str, dict[str, Any]], + active_tools: set[str], + ollama_port: int = 11434, + ) -> None: + self.runtime = runtime + self.registry = registry_data + self.active_tools = active_tools + self.ollama_port = ollama_port + + # ── Main dispatch entry point ───────────────────────────────────── + + def execute_tool_call( + self, + tool_call: dict[str, Any], + ) -> dict[str, Any]: + """Execute a single tool_call and return the result. + + Parameters + ---------- + tool_call : + A dict with ``name`` (str) and ``arguments`` (dict). + + Returns + ------- + dict with ``success``, ``result_text``, and optional ``data``. + """ + name = tool_call.get("name", "") + args = tool_call.get("arguments", {}) + + handlers: dict[str, Any] = { + "start_service": self._start_service, + "stop_service": self._stop_service, + "check_service_status": self._check_status, + "pull_model": self._pull_model, + "list_available_tools": self._list_tools, + "inject_skill": self._inject_skill_stub, + "open_web_interface": self._open_web, + "search_registry": self._search_registry, + "install_tool": self._install_tool, + } + + handler = handlers.get(name) + if handler is None: + return { + "success": False, + "result_text": f"Unknown tool: {name}. " + f"Available: {', '.join(handlers.keys())}", + } + + try: + return handler(args) + except Exception as exc: + logger.error("Tool call %s failed: %s", name, exc) + return { + "success": False, + "result_text": f"Error executing {name}: {exc}", + } + + # ── Tool handlers ────────────────────────────────────────────────── + + def _start_service(self, args: dict) -> dict[str, Any]: + tool_id = args.get("tool_id", "") + meta = self.registry.get(tool_id, {}) + if not meta: + return { + "success": False, + "result_text": f"Tool '{tool_id}' not found in registry.", + } + + launcher = meta.get("launcher", {}) + launcher_type = launcher.get("type", "tmux") + launcher_cmd = launcher.get("cmd", "") + port = str(args.get("port", launcher.get("default_port", ""))) + + result = self.runtime.start_service( + tool_id=tool_id, + launcher_cmd=launcher_cmd, + launcher_type=launcher_type, + port=port, + ) + self.active_tools.add(tool_id) + return {"success": True, "result_text": result} + + def _stop_service(self, args: dict) -> dict[str, Any]: + tool_id = args.get("tool_id", "") + meta = self.registry.get(tool_id, {}) + launcher = meta.get("launcher", {}) + result = self.runtime.stop_service( + tool_id=tool_id, + launcher_type=launcher.get("type", "tmux"), + launcher_cmd=launcher.get("cmd", ""), + search_term=launcher.get("cmd", ""), + is_docker=meta.get("flags", {}).get("is_docker", False), + ) + self.active_tools.discard(tool_id) + return {"success": True, "result_text": result} + + def _check_status(self, args: dict) -> dict[str, Any]: + tool_id = args.get("tool_id", "") + meta = self.registry.get(tool_id, {}) + launcher = meta.get("launcher", {}) + running = self.runtime.is_service_running( + launcher_type=launcher.get("type", "tmux"), + tool_id=tool_id, + service_cmd=launcher.get("cmd", ""), + search_term=launcher.get("cmd", ""), + ) + status = "RUNNING" if running else "OFFLINE" + return { + "success": True, + "result_text": f"{tool_id} is {status}", + "data": {"tool_id": tool_id, "running": running}, + } + + def _pull_model(self, args: dict) -> dict[str, Any]: + model_name = args.get("model_name", "") + if not model_name: + return { + "success": False, + "result_text": "model_name is required.", + } + proc = self.runtime.pull_model(model_name) + output, _ = proc.communicate(timeout=600) + return { + "success": proc.returncode == 0, + "result_text": output.strip() if output else "Pull completed.", + } + + def _list_tools(self, args: dict) -> dict[str, Any]: + filter_layer = args.get("filter_layer", "") + filter_cat = args.get("filter_category", "") + running_only = args.get("running_only", False) + + results = [] + for tid, meta in self.registry.items(): + if filter_layer and meta.get("layer") != filter_layer: + continue + if filter_cat and meta.get("category") != filter_cat: + continue + if running_only and tid not in self.active_tools: + continue + results.append({ + "tool_id": tid, + "name": meta.get("name", tid), + "layer": meta.get("layer", ""), + "category": meta.get("category", ""), + "active": tid in self.active_tools, + "description": meta.get("description", ""), + }) + + return { + "success": True, + "result_text": f"Found {len(results)} tools.", + "data": results, + } + + def _inject_skill_stub(self, args: dict) -> dict[str, Any]: + skill_name = args.get("skill_name", "") + return { + "success": True, + "result_text": ( + f"Skill '{skill_name}' queued for injection. " + f"The frontend should load the skill's system prompt " + f"and prepend it to the next LLM call." + ), + } + + def _open_web(self, args: dict) -> dict[str, Any]: + tool_id = args.get("tool_id", "") + meta = self.registry.get(tool_id, {}) + port = str( + args.get("port", meta.get("launcher", {}).get("default_port", "")) + ) + if not port: + return { + "success": False, + "result_text": f"No web port known for {tool_id}.", + } + url = self.runtime.open_web_url(port) + return { + "success": True, + "result_text": f"Opened {tool_id} web interface at {url}", + } + + def _search_registry(self, args: dict) -> dict[str, Any]: + query = args.get("query", "").lower() + results = [] + for tid, meta in self.registry.items(): + searchable = " ".join([ + tid, meta.get("name", ""), meta.get("description", ""), + meta.get("layer", ""), meta.get("category", ""), + ]).lower() + if query in searchable: + results.append({ + "tool_id": tid, + "name": meta.get("name", tid), + "layer": meta.get("layer", ""), + "description": meta.get("description", ""), + }) + return { + "success": True, + "result_text": f"Found {len(results)} matching tools.", + "data": results, + } + + def _install_tool(self, args: dict) -> dict[str, Any]: + tool_id = args.get("tool_id", "") + meta = self.registry.get(tool_id, {}) + if not meta: + return { + "success": False, + "result_text": f"Tool '{tool_id}' not found in registry.", + } + installer = meta.get("installer", {}) + result = self.runtime.install_tool( + inst_type=installer.get("type", "pacman"), + pkg=installer.get("pkg", ""), + cmd=installer.get("cmd", ""), + tool_id=tool_id, + ctx=self.runtime.format_context(), + ) + return {"success": True, "result_text": result} diff --git a/src/ai_lsc/agents/librechat_config.py b/src/ai_lsc/agents/librechat_config.py new file mode 100644 index 0000000..f86d6c1 --- /dev/null +++ b/src/ai_lsc/agents/librechat_config.py @@ -0,0 +1,301 @@ +""" +AI-LSC — LibreChat configuration generator. + +Generates the ``librechat.yaml`` configuration file that wires LibreChat +to the local AI-LSC stack: Ollama inference engine, LiteLLM proxy for +multi-model routing, and the agent tool-use schemas from the agents bridge. + +This makes LibreChat the turnkey agent frontend for the agentic stack +— just start it and all 210+ models plus tool-calling are available +through the web UI. + +Usage +----- + config = LibreChatConfigGenerator() + config.set_ollama_endpoint(ollama_port=11434) + config.set_litellm_endpoint(litellm_port=4000) + config.set_tool_schemas(tool_schemas) + config.save("/mnt/AI/tools/librechat/librechat.yaml") +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +class LibreChatConfigGenerator: + """Generate LibreChat configuration for AI-LSC integration. + + Parameters + ---------- + config_dir : + Directory where LibreChat is installed (contains docker-compose.yml + or the yarn project root). + """ + + def __init__(self, config_dir: str | Path | None = None) -> None: + self.config_dir = Path(config_dir) if config_dir else None + self._endpoints: dict[str, dict[str, Any]] = {} + self._tool_schemas: list[dict[str, Any]] = [] + self._assistants: list[dict[str, Any]] = [] + self._preset_customizations: list[dict[str, Any]] = [] + + # ── Endpoint Configuration ───────────────────────────────────────── + + def set_ollama_endpoint( + self, + ollama_port: int = 11434, + ollama_host: str = "127.0.0.1", + ) -> None: + """Configure the direct Ollama endpoint for native tool calling.""" + self._endpoints["ollama"] = { + "type": "ollama", + "name": "AI-LSC Ollama (Native Tool Calling)", + "url": f"http://{ollama_host}:{ollama_port}", + "models": { + "default": ["qwen2.5:32b", "qwen2.5:72b"], + "fetch": True, # auto-discover models from /api/tags + }, + } + + def set_litellm_endpoint( + self, + litellm_port: int = 4000, + litellm_host: str = "127.0.0.1", + api_key: str = "sk-ai-lsc-local", + ) -> None: + """Configure the LiteLLM proxy endpoint for multi-model routing.""" + self._endpoints["litellm"] = { + "type": "openai", + "name": "AI-LSC LiteLLM Proxy (All Models)", + "url": f"http://{litellm_host}:{litellm_port}/v1", + "apiKey": api_key, + "models": { + "default": [ + "classifier", "utility", "reasoner", "heavy", + "llama3-8b", "gemma2-9b", "phi4", "mistral", + "command-r", "coder-heavy", + ], + "fetch": True, + }, + } + + def set_openwebui_endpoint( + self, + port: int = 8080, + host: str = "127.0.0.1", + ) -> None: + """Configure OpenWebUI as an OpenAI-compatible endpoint.""" + self._endpoints["openwebui"] = { + "type": "openai", + "name": "Open WebUI", + "url": f"http://{host}:{port}/api", + "apiKey": "sk-local", + "models": {"default": ["*"], "fetch": True}, + } + + # ── Tool Schema Integration ──────────────────────────────────────── + + def set_tool_schemas( + self, + schemas: list[dict[str, Any]], + ) -> None: + """Set the AI-LSC tool schemas for LibreChat's tool-use system. + + These are registered as server-side tools that any assistant + can invoke through the OpenAI function-calling protocol. + """ + self._tool_schemas = schemas + + # ── Assistant Presets ─────────────────────────────────────────────── + + def add_assistant_preset( + self, + name: str, + model: str = "reasoner", + system_prompt: str = "", + tools_enabled: bool = True, + ) -> None: + """Add a pre-configured assistant definition. + + Parameters + ---------- + name : + Assistant display name. + model : + Default model identifier (matches LiteLLM alias or Ollama model). + system_prompt : + Initial system prompt. + tools_enabled : + Whether to enable AI-LSC tool calling. + """ + assistant: dict[str, Any] = { + "name": name, + "model": model, + "system_prompt": system_prompt, + } + if tools_enabled and self._tool_schemas: + assistant["tools"] = self._tool_schemas + self._assistants.append(assistant) + + def add_default_assistants(self) -> None: + """Add the standard AI-LSC assistant presets.""" + self.add_assistant_preset( + name="Stack Operator", + model="reasoner", + system_prompt=( + "You are the AI-LSC Stack Operator. You can start, stop, " + "and manage the entire AI tool stack. Use tools to control " + "services, pull models, and configure the pipeline. " + "Always check service status before starting or stopping." + ), + ) + self.add_assistant_preset( + name="RAG Analyst", + model="reasoner", + system_prompt=( + "You are the AI-LSC RAG Analyst. You search knowledge " + "bases, analyze documents using vector similarity, and " + "synthesize information from multiple sources. Use the " + "inject_skill tool to load the rag-analyst skill." + ), + ) + self.add_assistant_preset( + name="Code Reviewer", + model="heavy", + system_prompt=( + "You are the AI-LSC Code Reviewer. You review code for " + "bugs, style issues, security vulnerabilities, and " + "architectural problems. Use the inject_skill tool to " + "load the code-reviewer skill for deep analysis." + ), + ) + + # ── YAML Generation ───────────────────────────────────────────────── + + def generate_yaml(self) -> str: + """Generate the librechat.yaml configuration content.""" + lines = [ + "# AI-LSC — LibreChat Configuration", + "# Auto-generated by agents/librechat_config.py", + "# Connects LibreChat to the local AI-LSC tool stack", + "", + ] + + # Endpoints + if self._endpoints: + lines.append("endpoints:") + for name, config in self._endpoints.items(): + lines.append(f' - name: "{config.get("name", name)}"') + lines.append(f' type: "{config.get("type", "openai")}"') + lines.append(f' url: "{config.get("url", "")}"') + if "apiKey" in config: + lines.append(f' apiKey: "{config["apiKey"]}"') + lines.append("") + + # Tool schemas (written as JSON in a comment block for copy-paste) + if self._tool_schemas: + lines.append("# AI-LSC Tool Schemas (register via LibreChat admin UI):") + lines.append("# tools:") + lines.append(f"# schemas: {json.dumps(self._tool_schemas, indent=4)}") + lines.append("") + + # Assistant presets + if self._assistants: + lines.append("# AI-LSC Assistant Presets:") + for assistant in self._assistants: + lines.append(f"# - name: \"{assistant['name']}\"") + lines.append(f"# model: \"{assistant['model']}\"") + lines.append(f"# system_prompt: \"{assistant.get('system_prompt', '')}\"") + lines.append("") + + return "\n".join(lines) + + def generate_env_file(self) -> str: + """Generate the .env file for LibreChat configuration.""" + env_lines = [ + "# AI-LSC — LibreChat Environment", + "# Auto-generated by agents/librechat_config.py", + "", + "# Database (use MariaDB from AI-LSC stack)", + "DB_HOST=127.0.0.1", + "DB_PORT=3306", + "DB_NAME=librechat", + "DB_USER=librechat", + "DB_PASS=librechat", + "", + "# Redis (use Redis from AI-LSC stack)", + "REDIS_HOST=127.0.0.1", + "REDIS_PORT=6379", + "", + # Application settings + "PORT=3080", + "HOST=127.0.0.1", + "NODE_ENV=production", + "API_PLUGINS=false", + "", + # AI-LSC integration + "ALLOWED_ENDPOINTS=ollama,openai,custom", + "", + ] + + # Add endpoint-specific env vars + if "ollama" in self._endpoints: + lines = self._endpoints["ollama"] + env_lines.append(f"# Ollama endpoint") + env_lines.append(f"OLLAMA_BASE_URL={lines.get('url', 'http://127.0.0.1:11434')}") + env_lines.append("") + + if "litellm" in self._endpoints: + litellm = self._endpoints["litellm"] + env_lines.append(f"# LiteLLM proxy endpoint") + env_lines.append(f"OPENAI_REVERSE_PROXY={litellm.get('url', 'http://127.0.0.1:4000/v1')}") + env_lines.append(f"OPENAI_API_KEY={litellm.get('apiKey', 'sk-ai-lsc-local')}") + env_lines.append("") + + return "\n".join(env_lines) + + # ── Persistence ────────────────────────────────────────────────── + + def save( + self, + config_dir: str | Path | None = None, + ) -> dict[str, str]: + """Write configuration files to disk. + + Returns a dict mapping filename → absolute path. + """ + out_dir = Path(config_dir) if config_dir else self.config_dir + if not out_dir: + return {} + + out_dir.mkdir(parents=True, exist_ok=True) + written: dict[str, str] = {} + + # librechat.yaml + yaml_path = out_dir / "librechat.yaml" + yaml_path.write_text(self.generate_yaml(), encoding="utf-8") + written["librechat.yaml"] = str(yaml_path) + + # .env + env_path = out_dir / ".env" + env_path.write_text(self.generate_env_file(), encoding="utf-8") + written[".env"] = str(env_path) + + # tool_schemas.json (for import via admin UI) + if self._tool_schemas: + schemas_path = out_dir / "ai_lsc_tool_schemas.json" + schemas_path.write_text( + json.dumps(self._tool_schemas, indent=2, ensure_ascii=False), + encoding="utf-8", + ) + written["ai_lsc_tool_schemas.json"] = str(schemas_path) + + logger.info("Saved LibreChat config files to %s", out_dir) + return written diff --git a/src/ai_lsc/agents/litellm_config.py b/src/ai_lsc/agents/litellm_config.py new file mode 100644 index 0000000..b2c6cba --- /dev/null +++ b/src/ai_lsc/agents/litellm_config.py @@ -0,0 +1,245 @@ +""" +AI-LSC — LiteLLM proxy configuration generator. + +Generates the ``litellm_config.yaml`` file that configures the LiteLLM +proxy to normalize all 210+ local Ollama models into a single OpenAI-compatible +endpoint. This lets LibreChat (and any other OpenAI-format client) talk to +the entire local model fleet through one port. + +The config also includes: + - Model tier routing (8B/14B/32B/70B) with custom names. + - Rate limiting per tier to manage VRAM contention. + - Fallback chains for graceful degradation. + +Usage +----- + config = LiteLLMConfigGenerator() + config.add_ollama_models(ollama_port=11434) + yaml_str = config.generate_yaml() + config.save("/mnt/AI/config/litellm_config.yaml") +""" + +from __future__ import annotations + +from pathlib import Path +from typing import Any + +from ai_lsc.constants import MODEL_TIERS +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +# Default model catalog — maps tier to representative Ollama models +_TIER_MODELS: dict[str, list[dict[str, str]]] = { + "8b": [ + {"ollama_name": "qwen2.5:7b", "alias": "classifier"}, + {"ollama_name": "llama3.1:8b", "alias": "llama3-8b"}, + {"ollama_name": "gemma2:9b", "alias": "gemma2-9b"}, + ], + "14b": [ + {"ollama_name": "qwen2.5:14b", "alias": "utility"}, + {"ollama_name": "phi4:14b", "alias": "phi4"}, + {"ollama_name": "mistral:7b", "alias": "mistral"}, + ], + "32b": [ + {"ollama_name": "qwen2.5:32b", "alias": "reasoner"}, + {"ollama_name": "llama3.1:70b", "alias": "llama3-70b"}, + {"ollama_name": "command-r:35b", "alias": "command-r"}, + ], + "70b": [ + {"ollama_name": "qwen2.5:72b", "alias": "heavy"}, + {"ollama_name": "deepseek-coder-v2:236b", "alias": "coder-heavy"}, + ], +} + +# Rate limits per tier (requests per minute) +_TIER_RPM: dict[str, int] = { + "8b": 60, + "14b": 30, + "32b": 10, + "70b": 3, +} + + +class LiteLLMConfigGenerator: + """Generate LiteLLM proxy configuration for the AI-LSC stack. + + Parameters + ---------- + general_settings : + Override dict for the ``general_settings`` section. + """ + + def __init__( + self, + general_settings: dict[str, Any] | None = None, + ) -> None: + self.model_list: list[dict[str, Any]] = [] + self.litellm_settings: dict[str, Any] = { + "drop_params": True, + "set_verbose": False, + } + self.general_settings: dict[str, Any] = general_settings or { + "master_key": "sk-ai-lsc-local", + } + self._tier_models: dict[str, list[dict[str, str]]] = { + k: list(v) for k, v in _TIER_MODELS.items() + } + + # ── Model Registration ──────────────────────────────────────────── + + def add_ollama_models( + self, + ollama_port: int = 11434, + ollama_host: str = "127.0.0.1", + ) -> None: + """Add the default tier-based Ollama models.""" + base_url = f"http://{ollama_host}:{ollama_port}" + + for tier, models in self._tier_models.items(): + rpm = _TIER_RPM.get(tier, 10) + tier_info = MODEL_TIERS.get(tier, {}) + + for model in models: + entry = { + "model_name": model["alias"], + "litellm_provider": "ollama", + "model_info": { + "id": model["ollama_name"], + "mode": "chat", + "tier": tier, + "max_vram_gb": tier_info.get("max_vram_gb", 32), + "description": tier_info.get("desc", ""), + }, + "litellm_params": { + "model": model["ollama_name"], + "api_base": base_url, + "rpm_limit": rpm, + }, + } + self.model_list.append(entry) + + logger.info("Added %d models from Ollama at %s", + len(self.model_list), base_url) + + def add_custom_model( + self, + alias: str, + ollama_name: str, + ollama_port: int = 11434, + rpm: int = 10, + tier: str = "32b", + ) -> None: + """Add a custom model to the configuration.""" + base_url = f"http://127.0.0.1:{ollama_port}" + tier_info = MODEL_TIERS.get(tier, {}) + + entry = { + "model_name": alias, + "litellm_provider": "ollama", + "model_info": { + "id": ollama_name, + "mode": "chat", + "tier": tier, + "max_vram_gb": tier_info.get("max_vram_gb", 32), + }, + "litellm_params": { + "model": ollama_name, + "api_base": base_url, + "rpm_limit": rpm, + }, + } + self.model_list.append(entry) + + def add_external_provider( + self, + alias: str, + provider: str, + api_key: str = "", + api_base: str = "", + model_id: str = "", + ) -> None: + """Add an external API provider (e.g. OpenAI, Anthropic).""" + entry = { + "model_name": alias, + "litellm_provider": provider, + "model_info": {"id": model_id}, + "litellm_params": { + "model": model_id, + "api_key": api_key, + }, + } + if api_base: + entry["litellm_params"]["api_base"] = api_base + self.model_list.append(entry) + + # ── YAML Generation ───────────────────────────────────────────────── + + def generate_yaml(self) -> str: + """Generate the litellm_config.yaml content.""" + lines = [ + "# AI-LSC — LiteLLM Proxy Configuration", + "# Auto-generated by agents/litellm_config.py", + "# Maps all local Ollama models into a single OpenAI-compatible endpoint", + "", + "model_list:", + ] + + for entry in self.model_list: + lines.append(f' - model_name: "{entry["model_name"]}"') + lines.append(f' litellm_provider: "{entry["litellm_provider"]}"') + for k, v in entry.get("litellm_params", {}).items(): + lines.append(f" {k}: {self._format_yaml_value(v)}") + lines.append("") + + # General settings + if self.general_settings: + lines.append("general_settings:") + for k, v in self.general_settings.items(): + lines.append(f" {k}: {self._format_yaml_value(v)}") + lines.append("") + + # LiteLLM settings + if self.litellm_settings: + lines.append("litellm_settings:") + for k, v in self.litellm_settings.items(): + lines.append(f" {k}: {self._format_yaml_value(v)}") + + return "\n".join(lines) + + def generate_dict(self) -> dict[str, Any]: + """Return the configuration as a plain dict (for JSON export).""" + return { + "model_list": self.model_list, + "general_settings": self.general_settings, + "litellm_settings": self.litellm_settings, + } + + # ── Persistence ────────────────────────────────────────────────── + + def save(self, path: str | Path) -> None: + """Write the YAML configuration to disk.""" + out = Path(path) + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(self.generate_yaml(), encoding="utf-8") + logger.info("Saved LiteLLM config to %s", out) + + # ── Helpers ──────────────────────────────────────────────────────── + + @staticmethod + def _format_yaml_value(value: Any) -> str: + """Format a Python value as a YAML scalar.""" + if isinstance(value, bool): + return "true" if value else "false" + if isinstance(value, (int, float)): + return str(value) + if isinstance(value, str): + if any(c in value for c in ':"\'{}[]&*?|>!%@`'): + return f'"{value}"' + return value + return str(value) + + def list_models(self) -> list[str]: + """Return all registered model aliases.""" + return [e["model_name"] for e in self.model_list] diff --git a/src/ai_lsc/agents/model_pool.py b/src/ai_lsc/agents/model_pool.py new file mode 100644 index 0000000..3c4e04d --- /dev/null +++ b/src/ai_lsc/agents/model_pool.py @@ -0,0 +1,226 @@ +""" +AI-LSC — Warm model pool with VRAM slot management. + +Manages a fixed pool of 4 VRAM slots with LRU eviction so that +models are pre-loaded and ready for inference. The pool maps +task types to model tiers: + + Slot 0: 8B classifier — routing, intent detection + Slot 1: 14B utility — summarization, clarification + Slot 2: 32B reasoning — analysis, code generation + Slot 3: 70B heavy — complex generation, documents + +When a new model is requested that does not fit in the current +allocation, the least-recently-used slot is evicted and the new +model is pulled and loaded. + +Usage +----- + pool = WarmModelPool(ollama_port=11434) + model = pool.acquire("reasoning") # returns "qwen2.5:32b" + pool.release(model) +""" + +from __future__ import annotations + +import json +import time +import urllib.error +import urllib.request +from collections import OrderedDict +from typing import Any + +from ai_lsc.constants import MODEL_TIERS +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + +# Mapping from logical task types to model tiers +_TASK_TO_TIER: dict[str, str] = { + "classification": "8b", + "routing": "8b", + "intent": "8b", + "clarification": "14b", + "summarization": "14b", + "utility": "14b", + "reasoning": "32b", + "analysis": "32b", + "code": "32b", + "script": "32b", + "generation": "70b", + "document": "70b", + "chart": "70b", + "web": "70b", + "complex": "70b", +} + +# Default model name per tier (user can override via set_tier_model) +_DEFAULT_MODELS: dict[str, str] = { + "8b": "qwen2.5:7b", + "14b": "qwen2.5:14b", + "32b": "qwen2.5:32b", + "70b": "qwen2.5:72b", +} + + +class WarmModelPool: + """Fixed-slot VRAM pool with LRU eviction. + + Parameters + ---------- + ollama_port : + Port of the Ollama API server. + max_slots : + Maximum number of models loaded simultaneously. + """ + + def __init__( + self, + ollama_port: int = 11434, + max_slots: int = 4, + ) -> None: + self.ollama_port = ollama_port + self.max_slots = max_slots + self.base_url = f"http://127.0.0.1:{ollama_port}" + self._tier_models: dict[str, str] = dict(_DEFAULT_MODELS) + # LRU-ordered: most recent at the end + self._loaded: OrderedDict[str, float] = OrderedDict() + self._pull_lock = False # simple guard against concurrent pulls + + # ── Configuration ────────────────────────────────────────────────── + + def set_tier_model(self, tier: str, model_name: str) -> None: + """Override the default model for a tier.""" + if tier in MODEL_TIERS: + self._tier_models[tier] = model_name + logger.info("Tier %s mapped to model %s", tier, model_name) + + def get_tier_model(self, tier: str) -> str: + """Return the model name assigned to a tier.""" + return self._tier_models.get(tier, _DEFAULT_MODELS.get(tier, "")) + + # ── Acquisition ──────────────────────────────────────────────────── + + def acquire(self, task_type: str) -> str: + """Acquire a model for the given task type. + + If the model is already loaded, it is promoted in the LRU order. + If not, a slot is evicted (if necessary) and the model is pulled. + + Parameters + ---------- + task_type : + Logical task category (e.g. "reasoning", "classification"). + + Returns + ------- + The Ollama model name that is ready for inference. + """ + tier = _TASK_TO_TIER.get(task_type, "32b") + model = self._tier_models.get(tier, "qwen2.5:32b") + + if model in self._loaded: + # Promote to most-recently-used + self._loaded.move_to_end(model) + self._loaded[model] = time.monotonic() + logger.info("Cache hit: %s (tier=%s)", model, tier) + return model + + # Need to load — evict if at capacity + while len(self._loaded) >= self.max_slots: + self._evict_lru() + + # Pull the model + self._pull_model(model) + self._loaded[model] = time.monotonic() + logger.info("Loaded model %s (tier=%s, slots=%d/%d)", + model, tier, len(self._loaded), self.max_slots) + return model + + def release(self, model: str) -> None: + """Release a model from active use. + + This is a soft release — the model stays loaded in the pool + until it is LRU-evicted. Call ``evict`` to force unload. + """ + if model in self._loaded: + self._loaded.move_to_end(model) + self._loaded[model] = time.monotonic() + + # ── Eviction ────────────────────────────────────────────────────── + + def evict(self, model: str) -> bool: + """Force-evict a specific model from the pool. + + Returns True if the model was in the pool and was evicted. + """ + if model in self._loaded: + del self._loaded[model] + logger.info("Force-evicted model: %s", model) + return True + return False + + def _evict_lru(self) -> str | None: + """Evict the least-recently-used model.""" + if not self._loaded: + return None + model, _ = self._loaded.popitem(last=False) + logger.info("LRU-evicted model: %s", model) + return model + + # ── Ollama interaction ───────────────────────────────────────────── + + def _pull_model(self, model_name: str) -> None: + """Pull a model from Ollama registry.""" + if self._pull_lock: + logger.warning("Pull already in progress, skipping %s", model_name) + return + self._pull_lock = True + try: + payload = json.dumps({"name": model_name}).encode("utf-8") + req = urllib.request.Request( + f"{self.base_url}/api/pull", + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + # Use streaming to avoid timeout on large models + with urllib.request.urlopen(req, timeout=600) as resp: + for line in resp: + pass # consume stream + logger.info("Pulled model: %s", model_name) + except urllib.error.URLError as exc: + logger.error("Failed to pull %s: %s", model_name, exc) + except Exception as exc: + logger.error("Pull error for %s: %s", model_name, exc) + finally: + self._pull_lock = False + + # ── Status ───────────────────────────────────────────────────────── + + def list_loaded(self) -> list[dict[str, Any]]: + """Return the currently loaded models with their tier info.""" + result = [] + for model, ts in self._loaded.items(): + tier = "unknown" + for t, m in self._tier_models.items(): + if m == model: + tier = t + break + result.append({ + "model": model, + "tier": tier, + "last_used": ts, + "age_seconds": time.monotonic() - ts, + }) + return result + + def status_summary(self) -> dict[str, Any]: + """Return pool status for logging/dashboard display.""" + return { + "max_slots": self.max_slots, + "used_slots": len(self._loaded), + "free_slots": self.max_slots - len(self._loaded), + "loaded_models": list(self._loaded.keys()), + "tier_mapping": dict(self._tier_models), + } diff --git a/src/ai_lsc/agents/ollama_tools.py b/src/ai_lsc/agents/ollama_tools.py new file mode 100644 index 0000000..73dd1c1 --- /dev/null +++ b/src/ai_lsc/agents/ollama_tools.py @@ -0,0 +1,148 @@ +""" +AI-LSC — Ollama tool schema registration. + +Registers AI-LSC tool schemas with Ollama's native ``/api/tools`` +endpoint so that models running through Ollama can use function calling +to control the AI-LSC stack. + +Ollama tool-use flow +-------------------- +1. Register tools via ``POST /api/tools`` (this module) +2. Include tool names in ``POST /api/chat`` request +3. Model returns ``tool_call`` objects in its response +4. Client executes the tool call and sends the result back +5. Model continues the conversation with tool results + +Usage +----- + registrar = OllamaToolRegistrar(ollama_port=11434) + registrar.register_all(tool_schemas) +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +class OllamaToolRegistrar: + """Register and manage tool schemas with a running Ollama instance. + + Parameters + ---------- + ollama_port : + Port of the Ollama API server. + timeout : + HTTP request timeout in seconds. + """ + + def __init__( + self, + ollama_port: int = 11434, + timeout: float = 10.0, + ) -> None: + self.base_url = f"http://127.0.0.1:{ollama_port}" + self.timeout = timeout + self._registered: set[str] = set() + + # ── Registration ────────────────────────────────────────────────── + + def register_all( + self, + schemas: list[dict[str, Any]], + ) -> dict[str, bool]: + """Register a list of tool schemas with Ollama. + + Returns a dict mapping tool name → success bool. + """ + results: dict[str, bool] = {} + for schema in schemas: + func = schema.get("function", {}) + name = func.get("name", "unknown") + try: + self._register_single(schema) + self._registered.add(name) + results[name] = True + logger.info("Registered tool: %s", name) + except Exception as exc: + results[name] = False + logger.warning("Failed to register %s: %s", name, exc) + return results + + def register_single( + self, + schema: dict[str, Any], + ) -> bool: + """Register a single tool schema. Returns True on success.""" + func = schema.get("function", {}) + name = func.get("name", "unknown") + try: + self._register_single(schema) + self._registered.add(name) + logger.info("Registered tool: %s", name) + return True + except Exception as exc: + logger.warning("Failed to register %s: %s", name, exc) + return False + + def _register_single(self, schema: dict[str, Any]) -> None: + """POST a single tool schema to Ollama's /api/tools endpoint.""" + # Extract just the function definition for Ollama + func_def = schema.get("function", {}) + payload = json.dumps({ + "name": func_def.get("name"), + "description": func_def.get("description", ""), + "parameters": func_def.get("parameters", {"type": "object", "properties": {}}), + }).encode("utf-8") + + url = f"{self.base_url}/api/tools" + req = urllib.request.Request( + url, + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + if resp.status != 200: + raise RuntimeError( + f"Ollama returned status {resp.status}" + ) + + # ── Querying ─────────────────────────────────────────────────────── + + def list_registered_tools(self) -> list[str]: + """Return names of tools registered in this session.""" + return sorted(self._registered) + + def check_ollama_health(self) -> bool: + """Check if Ollama is reachable. Returns True if healthy.""" + try: + req = urllib.request.Request(self.base_url + "/") + with urllib.request.urlopen( + req, timeout=self.timeout + ) as resp: + return resp.status == 200 + except Exception: + return False + + def list_ollama_models(self) -> list[dict[str, Any]]: + """Query Ollama for available models via /api/tags.""" + try: + req = urllib.request.Request( + f"{self.base_url}/api/tags", + headers={"Content-Type": "application/json"}, + ) + with urllib.request.urlopen( + req, timeout=self.timeout + ) as resp: + data = json.loads(resp.read().decode("utf-8")) + return data.get("models", []) + except Exception as exc: + logger.warning("Failed to list models: %s", exc) + return [] diff --git a/src/ai_lsc/agents/orchestrator.py b/src/ai_lsc/agents/orchestrator.py new file mode 100644 index 0000000..afe825a --- /dev/null +++ b/src/ai_lsc/agents/orchestrator.py @@ -0,0 +1,554 @@ +""" +AI-LSC — 7-layer agentic orchestration pipeline. + +Implements the full agentic architecture that transforms a user's natural +language request into a sequence of tool calls, skill injections, and +sub-agent operations: + + Layer 1: **Router** — Classify the request and route to the right handler. + Layer 2: **Skill Loader** — Load relevant skill summaries and full prompts. + Layer 3: **Clarification Gate** — Confidence-gated user interaction. + Layer 4: **Outline Planner** — Generate a step-by-step execution plan. + Layer 5: **Tool Orchestrator** — Translate plan into tool call sequences. + Layer 6: **Subagent Spawner** — Delegate subtasks to specialized agents. + Layer 7: **Quality Enforcer** — Validate results and retry if needed. + +Each layer is optional and can be bypassed based on confidence scores +and task complexity. Simple requests ("start qdrant") skip straight +from Router → Tool Orchestrator → execution. + +Usage +----- + orch = AgentOrchestrator( + dispatcher=dispatcher, + skill_resolver=skill_resolver, + redis_bridge=redis_bridge, + ollama_port=11434, + ) + result = orch.execute("start the RAG pipeline and search quarterly report") +""" + +from __future__ import annotations + +import json +import time +from dataclasses import dataclass, field +from typing import Any, Callable + +from ai_lsc.agents.clarification_gate import ClarificationGate, ClarificationDecision +from ai_lsc.agents.model_pool import WarmModelPool +from ai_lsc.agents.redis_bridge import RedisBridge +from ai_lsc.agents.skill_injector import SkillInjector +from ai_lsc.agents.skill_resolver import EnhancedSkillResolver +from ai_lsc.constants import ( + AGENT_DEFAULT_MODEL, + AGENT_MAX_ROUNDS, + CLARIFICATION_SKIP_THRESHOLD, +) +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +@dataclass +class OrchestratorResult: + """Final result from the orchestration pipeline.""" + + success: bool + response: str + layers_executed: list[str] = field(default_factory=list) + tool_calls_made: list[dict[str, Any]] = field(default_factory=list) + skills_loaded: list[str] = field(default_factory=list) + rounds: int = 0 + model: str = "" + duration_seconds: float = 0.0 + metadata: dict[str, Any] = field(default_factory=dict) + + def to_dict(self) -> dict[str, Any]: + return { + "success": self.success, + "response": self.response, + "layers_executed": self.layers_executed, + "tool_calls_made": self.tool_calls_made, + "skills_loaded": self.skills_loaded, + "rounds": self.rounds, + "model": self.model, + "duration_seconds": round(self.duration_seconds, 2), + "metadata": self.metadata, + } + + +class AgentOrchestrator: + """7-layer agentic orchestration pipeline. + + Parameters + ---------- + dispatcher : + An ``AgentDispatcher`` for executing tool calls. + skill_resolver : + An ``EnhancedSkillResolver`` for skill discovery. + redis_bridge : + A ``RedisBridge`` for hot-path coordination (can be None). + skills_root : + Path to the skills directory. + ollama_port : + Port of the Ollama API server. + timeout : + HTTP timeout per Ollama call in seconds. + max_rounds : + Maximum tool-call rounds per request. + on_needs_clarification : + Optional callback invoked when user clarification is needed. + Receives a ``ClarificationDecision`` and should return the + user's response (or an empty string to abort). + """ + + def __init__( + self, + dispatcher: Any, # AgentDispatcher + skill_resolver: EnhancedSkillResolver, + redis_bridge: RedisBridge | None = None, + skills_root: str = "", + ollama_port: int = 11434, + timeout: float = 300.0, + max_rounds: int = AGENT_MAX_ROUNDS, + on_needs_clarification: Callable[[ClarificationDecision], str] | None = None, + ) -> None: + from ai_lsc.constants import BASE_DIR + self.skills_root = skills_root or os.path.join(BASE_DIR, "skills") + self.dispatcher = dispatcher + self.skill_resolver = skill_resolver + self.redis = redis_bridge + self.ollama_port = ollama_port + self.timeout = timeout + self.max_rounds = max_rounds + self.on_clarify = on_needs_clarification + + # Sub-components + self.model_pool = WarmModelPool(ollama_port=ollama_port) + self.clarification_gate = ClarificationGate(ollama_port=ollama_port) + self.skill_injector = SkillInjector(skill_resolver, self.skills_root) + + # Active state tracking + self.active_tools: set[str] = set() + self._conversation_history: list[dict[str, str]] = [] + + # ── Main Execution Entry Point ───────────────────────────────────── + + def execute( + self, + user_message: str, + model: str | None = None, + available_tools: list[str] | None = None, + ) -> OrchestratorResult: + """Execute a user request through the full orchestration pipeline. + + Parameters + ---------- + user_message : + The user's natural language request. + model : + Override the auto-selected model. + available_tools : + Explicit list of tool IDs the orchestrator can use. + + Returns + ------- + An ``OrchestratorResult`` with the final output and metadata. + """ + start_time = time.monotonic() + layers_executed: list[str] = [] + tool_calls_made: list[dict[str, Any]] = [] + skills_loaded: list[str] = [] + use_model = model or AGENT_DEFAULT_MODEL + + try: + # ── Layer 1: Router ─────────────────────────────────── + route = self._route(user_message, available_tools) + layers_executed.append("router") + use_model = model or route.get("model", use_model) + logger.info( + "Route: intent=%s, confidence=%.2f, model=%s", + route.get("intent", "unknown"), + route.get("confidence", 0), + use_model, + ) + + # ── Layer 2: Skill Loader ──────────────────────────── + skills = self._load_skills(user_message) + layers_executed.append("skill_loader") + if skills: + for s in skills: + skills_loaded.append(s.name) + logger.info("Loaded %d skills: %s", len(skills), [s.name for s in skills]) + + # ── Layer 3: Clarification Gate ─────────────────────── + decision = self._clarify(user_message, available_tools) + layers_executed.append("clarification_gate") + + if decision.mode == "clarify": + if self.on_clarify: + response = self.on_clarify(decision) + if not response: + return OrchestratorResult( + success=False, + response="Request cancelled by user.", + layers_executed=layers_executed, + model=use_model, + duration_seconds=time.monotonic() - start_time, + ) + user_message = response # User clarified + else: + logger.info("Clarification needed but no callback — proceeding with defaults") + + # ── Layer 4: Outline Planner ─────────────────────────── + plan = self._plan(user_message, skills, decision) + layers_executed.append("outline_planner") + logger.info("Plan: %d steps", len(plan.get("steps", []))) + + # ── Layer 5: Tool Orchestrator ───────────────────────── + results, calls = self._orchestrate(plan, use_model, skills) + layers_executed.append("tool_orchestrator") + tool_calls_made.extend(calls) + + # ── Layer 6: Subagent Spawner ────────────────────────── + if plan.get("needs_subagents"): + sub_results = self._spawn_subagents(plan, use_model) + layers_executed.append("subagent_spawner") + results.append(f"Sub-agent results: {json.dumps(sub_results)}") + + # ── Layer 7: Quality Enforcer ────────────────────────── + final = self._enforce_quality(results, user_message) + layers_executed.append("quality_enforcer") + + return OrchestratorResult( + success=True, + response=final, + layers_executed=layers_executed, + tool_calls_made=tool_calls_made, + skills_loaded=skills_loaded, + rounds=len(calls), + model=use_model, + duration_seconds=time.monotonic() - start_time, + ) + + except Exception as exc: + logger.error("Orchestration failed: %s", exc) + return OrchestratorResult( + success=False, + response=f"Orchestration error: {exc}", + layers_executed=layers_executed, + tool_calls_made=tool_calls_made, + model=use_model, + duration_seconds=time.monotonic() - start_time, + ) + + # ── Layer 1: Router ──────────────────────────────────────────────── + + def _route( + self, + message: str, + tools: list[str] | None, + ) -> dict[str, Any]: + """Classify the request and determine the best model tier.""" + classification = self.clarification_gate._classify(message, tools) + + intent = classification.get("intent", "unknown") + tool_id = classification.get("tool_id", "") + confidence = classification.get("confidence", 0.5) + + # Select model tier based on intent complexity + task_type = self._intent_to_task_type(intent) + model = self.model_pool.acquire(task_type) + + return { + "intent": intent, + "tool_id": tool_id, + "confidence": confidence, + "task_type": task_type, + "model": model, + "arguments": classification.get("arguments", {}), + } + + @staticmethod + def _intent_to_task_type(intent: str) -> str: + """Map an intent string to a model task type.""" + intent_lower = intent.lower() + if any(w in intent_lower for w in ["start", "stop", "check", "list", "install"]): + return "classification" + if any(w in intent_lower for w in ["summarize", "clarify", "explain"]): + return "utility" + if any(w in intent_lower for w in ["analyze", "reason", "review", "code", "script"]): + return "reasoning" + if any(w in intent_lower for w in ["generate", "write", "create", "document"]): + return "generation" + return "reasoning" + + # ── Layer 2: Skill Loader ───────────────────────────────────────── + + def _load_skills( + self, + message: str, + ) -> list[Any]: + """Find and load skills matching the user's request.""" + matches = self.skill_resolver.find_by_trigger(message) + + # Also check semantic matching if Qdrant is available + # (graceful — no Qdrant = keyword-only matching) + + return matches[:3] # Limit to 3 skills max + + # ── Layer 3: Clarification Gate ─────────────────────────────────── + + def _clarify( + self, + message: str, + tools: list[str] | None, + ) -> ClarificationDecision: + """Run the clarification gate on the request.""" + return self.clarification_gate.evaluate(message, tools) + + # ── Layer 4: Outline Planner ────────────────────────────────────── + + def _plan( + self, + message: str, + skills: list[Any], + decision: ClarificationDecision, + ) -> dict[str, Any]: + """Generate an execution plan for the request. + + For high-confidence simple requests, the plan is a single step + derived from the clarification decision. For complex requests, + it calls the planner model. + """ + # Simple path: use the decision directly + if decision.mode == "skip" and decision.tool_id: + return { + "steps": [ + { + "action": decision.intent, + "tool": decision.tool_id, + "arguments": decision.arguments, + } + ], + "needs_subagents": False, + "complexity": "simple", + } + + # Complex path: ask the model to plan + plan = self._generate_plan(message, skills) + return plan + + def _generate_plan( + self, + message: str, + skills: list[Any], + ) -> dict[str, Any]: + """Use the planner model to generate a multi-step plan.""" + skill_names = [s.name for s in skills] if skills else [] + + system_prompt = ( + "You are a task planner for the AI-LSC agentic system. " + "Break the user's request into atomic steps. " + "Respond with ONLY valid JSON:\n" + '{"steps": [{"action": "", "tool": "", ' + '"arguments": {}}, ...], ' + '"needs_subagents": , ' + '"complexity": "simple|moderate|complex"}' + ) + + if skill_names: + system_prompt += f"\nAvailable skills: {', '.join(skill_names)}" + + try: + import json + import urllib.request + + payload = json.dumps({ + "model": AGENT_DEFAULT_MODEL, + "messages": [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": f"Plan this request: {message}"}, + ], + "stream": False, + "options": {"temperature": 0.0}, + }).encode("utf-8") + + req = urllib.request.Request( + f"http://127.0.0.1:{self.ollama_port}/api/chat", + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + data = json.loads(resp.read().decode("utf-8")) + content = data.get("message", {}).get("content", "").strip() + if content.startswith("```"): + content = content.split("\n", 1)[1] + if content.endswith("```"): + content = content[:-3] + return json.loads(content) + except Exception as exc: + logger.warning("Plan generation failed: %s", exc) + + # Fallback plan + return { + "steps": [{"action": message, "tool": "", "arguments": {}}], + "needs_subagents": False, + "complexity": "simple", + } + + # ── Layer 5: Tool Orchestrator ────────────────────────────────────── + + def _orchestrate( + self, + plan: dict[str, Any], + model: str, + skills: list[Any], + ) -> tuple[list[str], list[dict[str, Any]]]: + """Execute the plan steps via the dispatcher.""" + results: list[str] = [] + calls_made: list[dict[str, Any]] = [] + + for step in plan.get("steps", []): + tool_id = step.get("tool", "") + action = step.get("action", "") + arguments = step.get("arguments", {}) + + if not tool_id: + # No specific tool — let the agent loop handle it + result = self._agent_execute(action, model, skills) + results.append(result.get("final_response", "")) + calls_made.extend(result.get("tool_calls_made", [])) + else: + # Direct tool call + result = self.dispatcher.execute_tool_call({ + "name": tool_id, + "arguments": arguments, + }) + results.append(result.get("result_text", "")) + calls_made.append({ + "name": tool_id, + "arguments": arguments, + "result": result, + }) + + return results, calls_made + + def _agent_execute( + self, + task: str, + model: str, + skills: list[Any], + ) -> dict[str, Any]: + """Use the agent loop for complex multi-tool tasks.""" + from ai_lsc.agents.agent_loop import AgentLoop + + # Build tool schemas + from ai_lsc.agents.tool_bridge import ToolBridge + bridge = ToolBridge(self.dispatcher.registry, self.active_tools) + schemas = bridge.generate_all_schemas() + + loop = AgentLoop( + dispatcher=self.dispatcher, + ollama_port=self.ollama_port, + model=model, + system_prompt=self._build_system_prompt(skills), + timeout=self.timeout, + max_rounds=self.max_rounds, + ) + loop.set_tool_schemas(schemas) + + # Inject skill summaries if available + if skills: + summary = self.skill_injector.build_skill_summary(self.active_tools) + return loop.run(f"{summary}\n\nTask: {task}", model=model) + + return loop.run(task, model=model) + + def _build_system_prompt(self, skills: list[Any]) -> str: + """Build the system prompt with skill context.""" + parts = [ + "You are the AI-LSC Stack Operator. You can manage the entire " + "local AI tool stack using the provided tools. Always check " + "service status before starting or stopping services.", + ] + if skills: + parts.append( + "\nActive skills: " + + ", ".join(f"{s.name} ({s.description})" for s in skills) + ) + return "\n".join(parts) + + # ── Layer 6: Subagent Spawner ────────────────────────────────────── + + def _spawn_subagents( + self, + plan: dict[str, Any], + model: str, + ) -> list[dict[str, Any]]: + """Spawn sub-agents for parallelizable subtasks.""" + results: list[dict[str, Any]] = [] + + for step in plan.get("steps", []): + if step.get("parallelizable"): + try: + sub_result = self._agent_execute( + step.get("action", ""), + model, + [], + ) + results.append({ + "step": step.get("action", ""), + "result": sub_result.get("final_response", ""), + }) + except Exception as exc: + results.append({ + "step": step.get("action", ""), + "error": str(exc), + }) + + return results + + # ── Layer 7: Quality Enforcer ────────────────────────────────────── + + def _enforce_quality( + self, + results: list[str], + original_request: str, + ) -> str: + """Validate and refine the results.""" + if not results: + return "No results generated." + + # Check for error indicators in results + errors = [r for r in results if any( + e in r.lower() for e in ["error", "failed", "not found", "timeout"] + )] + + if errors: + # Filter out errors, keep successful results + clean = [r for r in results if r not in errors] + if clean: + return "\n".join(clean) + ( + f"\n\n(Warnings: {len(errors)} step(s) had issues)" + ) + return "All steps failed: " + "; ".join(errors[:3]) + + return "\n".join(results) + + # ── Public API ───────────────────────────────────────────────────── + + def update_active_tools(self, tools: set[str]) -> None: + """Update the set of currently active tools.""" + self.active_tools = set(tools) + + def get_status(self) -> dict[str, Any]: + """Return orchestrator status for monitoring.""" + return { + "model_pool": self.model_pool.status_summary(), + "active_tools": sorted(self.active_tools), + "conversation_length": len(self._conversation_history), + "redis": self.redis.health_check() if self.redis else {"connected": False}, + } diff --git a/src/ai_lsc/agents/qdrant_bridge.py b/src/ai_lsc/agents/qdrant_bridge.py new file mode 100644 index 0000000..882f72f --- /dev/null +++ b/src/ai_lsc/agents/qdrant_bridge.py @@ -0,0 +1,344 @@ +""" +AI-LSC — Qdrant vector memory bridge. + +Provides the Qdrant vector database integration for the Agentic OS +semantic memory layer, handling: + + - **Collection management**: Create, list, and delete vector collections. + - **Point operations**: Upsert, search, and delete vectors with payloads. + - **Embedding generation**: Use Ollama embedding models for vectorization. + - **Skill matching**: Semantic search over skill descriptions. + - **RAG pipeline**: Retrieve relevant context for document analysis. + +Qdrant serves as the **semantic path** (vector search, RAG), while Redis +handles the hot path and MariaDB handles cold persistence. + +Usage +----- + bridge = QdrantBridge(qdrant_port=6333, ollama_port=11434) + bridge.create_collection("documents", dimension=384) + bridge.upsert_points("documents", points) + results = bridge.search("documents", query="quarterly report", limit=5) +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +class QdrantBridge: + """Bridge to Qdrant for semantic vector operations. + + Uses Qdrant's REST API directly via urllib to maintain the same + zero-hard-dependency pattern as the rest of the agents package. + Falls back gracefully when Qdrant is not running. + + Parameters + ---------- + qdrant_host : + Qdrant server hostname. + qdrant_port : + Qdrant HTTP API port. + ollama_port : + Ollama port for embedding generation. + default_embedding_model : + Ollama model to use for embeddings. + timeout : + HTTP request timeout in seconds. + """ + + def __init__( + self, + qdrant_host: str = "127.0.0.1", + qdrant_port: int = 6333, + ollama_port: int = 11434, + default_embedding_model: str = "nomic-embed-text", + timeout: float = 30.0, + ) -> None: + self.qdrant_url = f"http://{qdrant_host}:{qdrant_port}" + self.ollama_url = f"http://127.0.0.1:{ollama_port}" + self.embedding_model = default_embedding_model + self.timeout = timeout + + def _qdrant_request( + self, + method: str, + path: str, + data: dict[str, Any] | None = None, + ) -> dict[str, Any] | None: + """Make a request to the Qdrant REST API.""" + url = f"{self.qdrant_url}{path}" + payload = json.dumps(data).encode("utf-8") if data else None + try: + req = urllib.request.Request( + url, + data=payload, + headers={"Content-Type": "application/json"}, + method=method, + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + if resp.status in (200, 201): + content = resp.read().decode("utf-8") + return json.loads(content) if content else {} + logger.warning("Qdrant %s %s returned %d", method, path, resp.status) + return None + except urllib.error.URLError as exc: + logger.debug("Qdrant not reachable: %s", exc) + return None + except Exception as exc: + logger.error("Qdrant request failed: %s %s: %s", method, path, exc) + return None + + # ── Collection Management ────────────────────────────────────────── + + def create_collection( + self, + name: str, + dimension: int = 768, + distance: str = "cosine", + ) -> bool: + """Create a new vector collection. + + Parameters + ---------- + name : + Collection name. + dimension : + Vector dimensionality (depends on embedding model). + distance : + Distance metric: "cosine", "euclid", or "dot". + """ + result = self._qdrant_request("PUT", f"/collections/{name}", { + "vectors": { + "size": dimension, + "distance": distance, + }, + }) + if result is not None: + logger.info("Created collection: %s (dim=%d, dist=%s)", name, dimension, distance) + return True + return False + + def list_collections(self) -> list[str]: + """Return names of all collections.""" + result = self._qdrant_request("GET", "/collections") + if result: + return [c["name"] for c in result.get("collections", [])] + return [] + + def delete_collection(self, name: str) -> bool: + """Delete a collection.""" + result = self._qdrant_request("DELETE", f"/collections/{name}") + return result is not None + + def collection_info(self, name: str) -> dict[str, Any] | None: + """Get detailed info about a collection.""" + return self._qdrant_request("GET", f"/collections/{name}") + + # ── Point Operations ─────────────────────────────────────────────── + + def upsert_points( + self, + collection: str, + points: list[dict[str, Any]], + ) -> bool: + """Upsert points (vectors + payloads) into a collection. + + Each point dict should have: + - "id": str or int — unique point ID + - "vector": list[float] — the embedding + - "payload": dict — arbitrary metadata + """ + result = self._qdrant_request("PUT", f"/collections/{collection}/points", { + "points": points, + }) + return result is not None + + def search( + self, + collection: str, + query_vector: list[float] | None = None, + query_text: str = "", + limit: int = 5, + filters: dict[str, Any] | None = None, + ) -> list[dict[str, Any]]: + """Search for similar vectors in a collection. + + Parameters + ---------- + collection : + Collection to search in. + query_vector : + Pre-computed embedding vector. If None, query_text is embedded. + query_text : + Text to embed and search with (used if query_vector is None). + limit : + Maximum results to return. + filters : + Optional Qdrant filter payload. + """ + if query_vector is None and query_text: + query_vector = self._embed(query_text) + if query_vector is None: + return [] + + search_body: dict[str, Any] = { + "vector": query_vector, + "limit": limit, + "with_payload": True, + } + if filters: + search_body["filter"] = filters + + result = self._qdrant_request( + "POST", f"/collections/{collection}/points/search", search_body + ) + if result: + return result.get("result", []) + return [] + + def delete_points( + self, + collection: str, + point_ids: list[str | int], + ) -> bool: + """Delete specific points from a collection.""" + result = self._qdrant_request( + "POST", + f"/collections/{collection}/points/delete", + {"points": [{"id": pid} for pid in point_ids]}, + ) + return result is not None + + def count_points(self, collection: str) -> int: + """Return the number of points in a collection.""" + result = self._qdrant_request( + "POST", f"/collections/{collection}/points/count", {} + ) + if result: + return result.get("result", {}).get("count", 0) + return 0 + + # ── Embedding Generation ─────────────────────────────────────────── + + def _embed(self, text: str) -> list[float] | None: + """Generate an embedding vector using Ollama's embedding API.""" + payload = json.dumps({ + "model": self.embedding_model, + "prompt": text, + }).encode("utf-8") + + try: + req = urllib.request.Request( + f"{self.ollama_url}/api/embeddings", + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + data = json.loads(resp.read().decode("utf-8")) + return data.get("embedding") + except Exception as exc: + logger.error("Embedding generation failed: %s", exc) + return None + + def embed_batch(self, texts: list[str]) -> list[list[float] | None]: + """Generate embeddings for multiple texts. + + Returns a list aligned with the input texts. + """ + results = [] + for text in texts: + results.append(self._embed(text)) + return results + + # ── Skill Matching (semantic) ─────────────────────────────────────── + + def index_skills( + self, + skills: list[dict[str, Any]], + collection: str = "skills", + ) -> bool: + """Index skill descriptions for semantic matching. + + Parameters + ---------- + skills : + List of skill dicts with "name", "description", and optional "triggers". + collection : + Collection to store skill vectors. + """ + # Create collection if it doesn't exist + if collection not in self.list_collections(): + if not self.create_collection(collection, dimension=768): + return False + + points = [] + for skill in skills: + # Combine name, description, and triggers for embedding + text_parts = [skill.get("name", ""), skill.get("description", "")] + triggers = skill.get("triggers", []) + if triggers: + text_parts.append(" ".join(triggers)) + text = " ".join(text_parts) + + vector = self._embed(text) + if vector is None: + continue + + points.append({ + "id": skill.get("name", ""), + "vector": vector, + "payload": { + "name": skill.get("name", ""), + "description": skill.get("description", ""), + "category": skill.get("category", ""), + "required_tools": skill.get("required_tools", []), + "triggers": triggers, + }, + }) + + if points: + return self.upsert_points(collection, points) + return False + + def find_similar_skills( + self, + query: str, + collection: str = "skills", + limit: int = 3, + ) -> list[dict[str, Any]]: + """Find skills semantically similar to a query.""" + results = self.search(collection, query_text=query, limit=limit) + return [ + { + "name": r.get("payload", {}).get("name", ""), + "description": r.get("payload", {}).get("description", ""), + "score": r.get("score", 0.0), + "category": r.get("payload", {}).get("category", ""), + "required_tools": r.get("payload", {}).get("required_tools", []), + } + for r in results + ] + + # ── Health Check ─────────────────────────────────────────────────── + + def health_check(self) -> dict[str, Any]: + """Return Qdrant connection health status.""" + result = self._qdrant_request("GET", "/collections") + connected = result is not None + collections = [] + if result: + collections = [c["name"] for c in result.get("collections", [])] + return { + "connected": connected, + "collections": collections, + "embedding_model": self.embedding_model, + } diff --git a/src/ai_lsc/agents/redis_bridge.py b/src/ai_lsc/agents/redis_bridge.py new file mode 100644 index 0000000..29f5189 --- /dev/null +++ b/src/ai_lsc/agents/redis_bridge.py @@ -0,0 +1,367 @@ +""" +AI-LSC — Redis hot-path bridge. + +Provides the Redis integration for the Agentic OS memory layer, +handling the hot-path concerns that need sub-millisecond latency: + + - **Task Queue**: FIFO queue for agent task dispatch and coordination. + - **Pub/Sub**: Real-time event broadcasting for inter-agent communication. + - **Status Cache**: TTL-based caching of service status and health checks. + - **Lock Management**: Distributed locks for preventing concurrent conflicts. + +Redis serves as the **hot path** (real-time, volatile), while MariaDB handles +the **cold path** (persistent audit logs, task memory, config) and Qdrant +handles the **semantic path** (vector search, RAG). + +Usage +----- + bridge = RedisBridge(port=6379) + bridge.enqueue_task("rag-pipeline", {"query": " quarterly report"}) + bridge.publish_event("service_started", {"tool_id": "qdrant"}) + bridge.cache_status("qdrant", {"running": True, "port": 6333}, ttl=30) +""" + +from __future__ import annotations + +import json +import time +from typing import Any + +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + +# Channel names for pub/sub +_CHANNELS = { + "service_events": "ai_lsc:events:service", + "agent_events": "ai_lsc:events:agent", + "task_events": "ai_lsc:events:task", + "model_events": "ai_lsc:events:model", + "skill_events": "ai_lsc:events:skill", +} + +# Key prefixes for organized data +_KEY_PREFIXES = { + "task_queue": "ai_lsc:queue:", + "status_cache": "ai_lsc:status:", + "task_result": "ai_lsc:result:", + "lock": "ai_lsc:lock:", + "agent_state": "ai_lsc:agent:", + "model_pool": "ai_lsc:pool:", +} + + +class RedisBridge: + """Bridge to Redis for hot-path agentic operations. + + Uses raw ``redis-py`` for direct Redis protocol access. + Falls back to a no-op stub when redis-py is not installed. + + Parameters + ---------- + host : + Redis server hostname. + port : + Redis server port. + db : + Redis database number (default 0). + """ + def __init__( + self, + host: str = "127.0.0.1", + port: int = 6379, + db: int = 0, + ) -> None: + self.host = host + self.port = port + self.db = db + self._client = None + self._pubsub = None + self._connected = False + self._try_connect() + + def _try_connect(self) -> None: + """Attempt to connect to Redis. Graceful degradation if unavailable.""" + try: + import redis as redis_lib + self._client = redis_lib.Redis( + host=self.host, port=self.port, db=self.db, + decode_responses=True, socket_timeout=5, + ) + self._client.ping() + self._connected = True + logger.info("Redis connected at %s:%d", self.host, self.port) + except ImportError: + logger.warning("redis-py not installed — Redis features disabled") + except Exception as exc: + logger.warning("Redis not available at %s:%d: %s", self.host, self.port, exc) + + @property + def is_connected(self) -> bool: + return self._connected and self._client is not None + + # ── Task Queue ───────────────────────────────────────────────────── + + def enqueue_task( + self, + queue_name: str, + task_data: dict[str, Any], + priority: int = 0, + ) -> str | None: + """Add a task to a named queue. + + Parameters + ---------- + queue_name : + Logical queue name (e.g. "rag-pipeline", "code-review"). + task_data : + Task payload dict. + priority : + Higher priority tasks are processed first. + + Returns + ------- + Task ID string, or None if Redis is unavailable. + """ + if not self.is_connected: + return None + + task_id = f"{queue_name}:{int(time.time() * 1000)}" + task_data["_task_id"] = task_id + task_data["_enqueued_at"] = time.time() + task_data["_priority"] = priority + + key = f"{_KEY_PREFIXES['task_queue']}{queue_name}" + payload = json.dumps(task_data) + + try: + # Use sorted set with priority score for priority queue behavior + self._client.zadd(key, {payload: -priority}) # negative = higher priority first + logger.info("Enqueued task %s to queue '%s' (priority=%d)", task_id, queue_name, priority) + return task_id + except Exception as exc: + logger.error("Failed to enqueue task: %s", exc) + return None + + def dequeue_task(self, queue_name: str) -> dict[str, Any] | None: + """Pop the highest-priority task from a queue.""" + if not self.is_connected: + return None + + key = f"{_KEY_PREFIXES['task_queue']}{queue_name}" + try: + # Get highest priority (lowest negative score) + result = self._client.zpopmin(key, count=1) + if not result: + return None + payload, _ = result[0] + return json.loads(payload) + except Exception as exc: + logger.error("Failed to dequeue task: %s", exc) + return None + + def queue_length(self, queue_name: str) -> int: + """Return the number of pending tasks in a queue.""" + if not self.is_connected: + return 0 + key = f"{_KEY_PREFIXES['task_queue']}{queue_name}" + try: + return self._client.zcard(key) + except Exception: + return 0 + + # ── Pub/Sub ──────────────────────────────────────────────────────── + + def publish_event( + self, + event_type: str, + data: dict[str, Any], + ) -> bool: + """Publish an event to the appropriate channel. + + Parameters + ---------- + event_type : + One of the channel types (service_events, agent_events, etc.) + data : + Event payload. + """ + if not self.is_connected: + return False + + channel = _CHANNELS.get(event_type, _CHANNELS["service_events"]) + data["_timestamp"] = time.time() + data["_event_type"] = event_type + + try: + self._client.publish(channel, json.dumps(data)) + logger.debug("Published %s event", event_type) + return True + except Exception as exc: + logger.error("Failed to publish event: %s", exc) + return False + + # ── Status Cache ──────────────────────────────────────────────────── + + def cache_status( + self, + tool_id: str, + status_data: dict[str, Any], + ttl: int = 30, + ) -> bool: + """Cache a tool's status with an expiration time. + + Parameters + ---------- + tool_id : + The tool identifier. + status_data : + Status payload (running, port, cpu, etc.). + ttl : + Time-to-live in seconds. + """ + if not self.is_connected: + return False + + key = f"{_KEY_PREFIXES['status_cache']}{tool_id}" + try: + self._client.setex(key, ttl, json.dumps(status_data)) + return True + except Exception as exc: + logger.error("Failed to cache status for %s: %s", tool_id, exc) + return False + + def get_cached_status(self, tool_id: str) -> dict[str, Any] | None: + """Retrieve cached status for a tool.""" + if not self.is_connected: + return None + + key = f"{_KEY_PREFIXES['status_cache']}{tool_id}" + try: + data = self._client.get(key) + return json.loads(data) if data else None + except Exception: + return None + + # ── Task Results ─────────────────────────────────────────────────── + + def store_result( + self, + task_id: str, + result: dict[str, Any], + ttl: int = 300, + ) -> bool: + """Store a task result for retrieval by other agents.""" + if not self.is_connected: + return False + + key = f"{_KEY_PREFIXES['task_result']}{task_id}" + try: + self._client.setex(key, ttl, json.dumps(result)) + return True + except Exception as exc: + logger.error("Failed to store result: %s", exc) + return False + + def get_result(self, task_id: str) -> dict[str, Any] | None: + """Retrieve a stored task result.""" + if not self.is_connected: + return None + + key = f"{_KEY_PREFIXES['task_result']}{task_id}" + try: + data = self._client.get(key) + return json.loads(data) if data else None + except Exception: + return None + + # ── Lock Management ──────────────────────────────────────────────── + + def acquire_lock( + self, + resource: str, + ttl: int = 60, + ) -> bool: + """Try to acquire a distributed lock. + + Parameters + ---------- + resource : + Resource identifier to lock. + ttl : + Lock expiration in seconds. + + Returns + ------- + True if the lock was acquired, False if already held. + """ + if not self.is_connected: + return True # If Redis is down, allow through + + key = f"{_KEY_PREFIXES['lock']}{resource}" + try: + return bool(self._client.set(key, "1", nx=True, ex=ttl)) + except Exception as exc: + logger.error("Lock acquire failed: %s", exc) + return True + + def release_lock(self, resource: str) -> bool: + """Release a distributed lock.""" + if not self.is_connected: + return True + + key = f"{_KEY_PREFIXES['lock']}{resource}" + try: + return bool(self._client.delete(key)) + except Exception: + return False + + # ── Agent State ──────────────────────────────────────────────────── + + def save_agent_state( + self, + agent_id: str, + state: dict[str, Any], + ) -> bool: + """Persist an agent's working state to Redis.""" + if not self.is_connected: + return False + + key = f"{_KEY_PREFIXES['agent_state']}{agent_id}" + try: + self._client.hset(key, mapping={ + k: json.dumps(v) if isinstance(v, (dict, list)) else str(v) + for k, v in state.items() + }) + return True + except Exception as exc: + logger.error("Failed to save agent state: %s", exc) + return False + + def load_agent_state(self, agent_id: str) -> dict[str, Any]: + """Load an agent's working state from Redis.""" + if not self.is_connected: + return {} + + key = f"{_KEY_PREFIXES['agent_state']}{agent_id}" + try: + raw = self._client.hgetall(key) + state: dict[str, Any] = {} + for k, v in raw.items(): + try: + state[k] = json.loads(v) + except (json.JSONDecodeError, TypeError): + state[k] = v + return state + except Exception: + return {} + + # ── Health Check ─────────────────────────────────────────────────── + + def health_check(self) -> dict[str, Any]: + """Return Redis connection health status.""" + return { + "connected": self.is_connected, + "host": self.host, + "port": self.port, + } diff --git a/src/ai_lsc/agents/schema.py b/src/ai_lsc/agents/schema.py new file mode 100644 index 0000000..e7c8d95 --- /dev/null +++ b/src/ai_lsc/agents/schema.py @@ -0,0 +1,208 @@ +""" +AI-LSC — Tool schema definitions for OpenAI-compatible function calling. + +Defines the JSON schema fragments that describe each tool action the LLM +can invoke. These schemas are consumed by: + - ``ToolBridge.generate_schemas()`` → full schema list + - ``ollama_tools.register_with_ollama()`` → POST /api/tools + - LibreChat / OpenWebUI tool-definition imports + +Every schema follows the OpenAI function-calling format:: + + { + "type": "function", + "function": { + "name": "", + "description": "", + "parameters": { + "type": "object", + "properties": { ... }, + "required": [ ... ] + } + } + } +""" + +from __future__ import annotations + +from typing import Any + + +# ── Common parameter fragments ───────────────────────────────────────── + +_TOOL_ID_PARAM: dict[str, Any] = { + "type": "string", + "description": "Tool identifier from the AI-LSC registry " + "(e.g. 'ollama', 'qdrant', 'redis').", +} + +_PORT_PARAM: dict[str, Any] = { + "type": "integer", + "description": "Override the default port (optional).", +} + +_MODEL_NAME_PARAM: dict[str, Any] = { + "type": "string", + "description": "Model name for Ollama pull " + "(e.g. 'qwen2.5:72b', 'llama3:8b').", +} + +_SKILL_NAME_PARAM: dict[str, Any] = { + "type": "string", + "description": "Skill identifier to inject into the conversation " + "(e.g. 'rag-analyst', 'code-reviewer').", +} + +_QUERY_PARAM: dict[str, Any] = { + "type": "string", + "description": "Search query or description of what to find.", +} + +_TARGET_URL_PARAM: dict[str, Any] = { + "type": "string", + "description": "URL to open in the browser.", +} + + +# ── Schema factory ───────────────────────────────────────────────────── + +def _make_schema( + name: str, + description: str, + properties: dict[str, Any], + required: list[str] | None = None, +) -> dict[str, Any]: + """Build an OpenAI function-calling tool schema.""" + return { + "type": "function", + "function": { + "name": name, + "description": description, + "parameters": { + "type": "object", + "properties": properties, + "required": required or [], + }, + }, + } + + +# ── Pre-built schemas for core actions ───────────────────────────────── + +SCHEMA_START_SERVICE = _make_schema( + name="start_service", + description="Start an AI-LSC managed service by its tool ID. " + "The service must be installed first.", + properties={ + "tool_id": _TOOL_ID_PARAM, + "port": _PORT_PARAM, + }, + required=["tool_id"], +) + +SCHEMA_STOP_SERVICE = _make_schema( + name="stop_service", + description="Stop a running AI-LSC managed service.", + properties={"tool_id": _TOOL_ID_PARAM}, + required=["tool_id"], +) + +SCHEMA_CHECK_STATUS = _make_schema( + name="check_service_status", + description="Check whether an AI-LSC service is currently running " + "and return its status.", + properties={"tool_id": _TOOL_ID_PARAM}, + required=["tool_id"], +) + +SCHEMA_PULL_MODEL = _make_schema( + name="pull_model", + description="Pull/download an Ollama model from the registry. " + "Requires Ollama to be running.", + properties={"model_name": _MODEL_NAME_PARAM}, + required=["model_name"], +) + +SCHEMA_LIST_TOOLS = _make_schema( + name="list_available_tools", + description="List all tools in the AI-LSC registry, optionally " + "filtered by layer, category, or status.", + properties={ + "filter_layer": { + "type": "string", + "description": "Optional layer name filter " + "(e.g. 'Inference Engines', 'Data & Knowledge Pipelines').", + }, + "filter_category": { + "type": "string", + "description": "Optional category filter " + "(e.g. 'Database', 'Cache', 'Vector Store').", + }, + "running_only": { + "type": "boolean", + "description": "If true, only return currently running tools.", + }, + }, +) + +SCHEMA_INJECT_SKILL = _make_schema( + name="inject_skill", + description="Inject a skill's system prompt into the current " + "conversation context. The skill must be registered in " + "the skills directory.", + properties={ + "skill_name": _SKILL_NAME_PARAM, + "params": { + "type": "object", + "description": "Optional key-value parameters for the skill.", + }, + }, + required=["skill_name"], +) + +SCHEMA_OPEN_WEB = _make_schema( + name="open_web_interface", + description="Open a tool's web interface in the browser.", + properties={ + "tool_id": _TOOL_ID_PARAM, + "port": _PORT_PARAM, + }, + required=["tool_id"], +) + +SCHEMA_SEARCH_REGISTRY = _make_schema( + name="search_registry", + description="Search the tool registry by keyword. Returns matching " + "tools with their IDs, descriptions, layers, and status.", + properties={"query": _QUERY_PARAM}, + required=["query"], +) + +SCHEMA_INSTALL_TOOL = _make_schema( + name="install_tool", + description="Install a tool from the AI-LSC registry if not " + "already present on the system.", + properties={ + "tool_id": _TOOL_ID_PARAM, + }, + required=["tool_id"], +) + + +# ── Convenience lookups ─────────────────────────────────────────────── + +CORE_SCHEMAS: list[dict[str, Any]] = [ + SCHEMA_START_SERVICE, + SCHEMA_STOP_SERVICE, + SCHEMA_CHECK_STATUS, + SCHEMA_PULL_MODEL, + SCHEMA_LIST_TOOLS, + SCHEMA_INJECT_SKILL, + SCHEMA_OPEN_WEB, + SCHEMA_SEARCH_REGISTRY, + SCHEMA_INSTALL_TOOL, +] + +SCHEMA_BY_NAME: dict[str, dict[str, Any]] = { + s["function"]["name"]: s for s in CORE_SCHEMAS +} diff --git a/src/ai_lsc/agents/skill_injector.py b/src/ai_lsc/agents/skill_injector.py new file mode 100644 index 0000000..6055a8f --- /dev/null +++ b/src/ai_lsc/agents/skill_injector.py @@ -0,0 +1,276 @@ +""" +AI-LSC — Three-phase skill injection. + +Manages progressive skill loading into agent context to minimize token +usage while maximizing capability: + + Phase 1: **Summary** — One-line skill description injected into the + system prompt so the agent knows what skills exist. + Phase 2: **Full skill** — Complete system prompt loaded when the agent + selects a skill for a task. + Phase 3: **Sub-files** — Additional reference files loaded on demand + (e.g. examples, templates, schema files). + +This avoids stuffing 50+ skill system prompts into context up front. + +Usage +----- + injector = SkillInjector(skill_resolver, skills_root) + # Phase 1: Build summary for system prompt + summary = injector.build_skill_summary() + # Phase 2: Get full skill prompt + full = injector.get_full_prompt("rag-analyst") + # Phase 3: Load sub-files for deep context + subs = injector.load_sub_files("rag-analyst", ["examples/", "schema.json"]) +""" + +from __future__ import annotations + +from pathlib import Path +from typing import Any + +from ai_lsc.agents.skill_resolver import EnhancedSkillResolver, SkillDefinition +from ai_lsc.utils.logging import get_logger + +logger = get_logger(__name__) + + +class SkillInjector: + """Three-phase skill injection manager. + + Parameters + ---------- + skill_resolver : + An ``EnhancedSkillResolver`` for loading skill metadata. + skills_root : + Path to the skills directory on disk. + """ + + def __init__( + self, + skill_resolver: EnhancedSkillResolver, + skills_root: str | Path, + ) -> None: + self.resolver = skill_resolver + self.skills_root = Path(skills_root) + self._phase2_cache: dict[str, str] = {} + self._phase3_cache: dict[str, dict[str, str]] = {} + + # ── Phase 1: Skill Summary ───────────────────────────────────────── + + def build_skill_summary(self, active_tools: set[str] | None = None) -> str: + """Build a compact summary of all available skills. + + This is injected into the system prompt so the agent knows + what skills exist without loading their full prompts. + + Parameters + ---------- + active_tools : + Currently active tool IDs — skills whose deps are met + are marked as [READY], others as [needs: deps...]. + + Returns + ------- + A multi-line summary string suitable for system prompt injection. + """ + active = active_tools or set() + lines = ["Available Skills:", "=" * 40] + + skills = self.resolver.list_all() + if not skills: + lines.append(" (no skills registered)") + return "\n".join(lines) + + for skill in skills: + missing = self.resolver.check_dependencies(skill.name, active) + if not missing: + status = "[READY]" + else: + status = f"[needs: {', '.join(missing)}]" + + triggers = ", ".join(skill.triggers[:3]) if skill.triggers else "no triggers" + lines.append( + f" {skill.name} {status} — {skill.description}\n" + f" Triggers: {triggers}" + ) + + lines.append("") + lines.append( + "Use inject_skill to load a skill's full prompt. " + "Only READY skills can be used immediately." + ) + return "\n".join(lines) + + # ── Phase 2: Full Skill Prompt ───────────────────────────────────── + + def get_full_prompt(self, skill_name: str) -> str: + """Load the complete system prompt for a skill. + + Cached after first load to avoid repeated disk I/O. + + Parameters + ---------- + skill_name : + The skill identifier. + + Returns + ------- + The full system prompt text, or an error message if not found. + """ + if skill_name in self._phase2_cache: + return self._phase2_cache[skill_name] + + skill = self.resolver.resolve(skill_name) + + if not skill.system_prompt: + msg = f"Skill '{skill_name}' has no SYSTEM block defined." + logger.warning(msg) + self._phase2_cache[skill_name] = msg + return msg + + # Wrap the system prompt with skill context + prompt_parts = [ + f"", + f"{skill.description}", + f"{skill.category}", + ] + + if skill.input_schema: + import json + schema_str = json.dumps(skill.input_schema, indent=2) + prompt_parts.append( + f"\n{schema_str}\n" + ) + + if skill.required_tools: + prompt_parts.append( + f"{', '.join(skill.required_tools)}" + ) + + prompt_parts.append(f"\n{skill.system_prompt}\n") + prompt_parts.append("") + + full_prompt = "\n".join(prompt_parts) + self._phase2_cache[skill_name] = full_prompt + logger.info("Loaded full prompt for skill: %s (%d chars)", + skill_name, len(full_prompt)) + return full_prompt + + # ── Phase 3: Sub-files ────────────────────────────────────────────── + + def load_sub_files( + self, + skill_name: str, + file_paths: list[str], + ) -> dict[str, str]: + """Load additional reference files for a skill. + + Sub-files are stored alongside the skill in a directory + named ``.d/``:: + + skills/ + rag-analyst ← Modelfile + rag-analyst.skill.json ← Metadata + rag-analyst.d/ ← Sub-files directory + examples/ + query.txt + schema.json + prompts/ + summarize.txt + + Parameters + ---------- + skill_name : + The skill identifier. + file_paths : + Relative paths within the skill's ``.d/`` directory. + + Returns + ------- + A dict mapping file path → content string. + """ + cache_key = skill_name + if cache_key not in self._phase3_cache: + self._phase3_cache[cache_key] = {} + + results: dict[str, str] = {} + skill_dir = self.skills_root / f"{skill_name}.d" + + for rel_path in file_paths: + # Check cache first + if rel_path in self._phase3_cache[cache_key]: + results[rel_path] = self._phase3_cache[cache_key][rel_path] + continue + + full_path = skill_dir / rel_path + if not full_path.exists(): + results[rel_path] = f"[File not found: {rel_path}]" + continue + + try: + content = full_path.read_text(encoding="utf-8", errors="ignore") + results[rel_path] = content + self._phase3_cache[cache_key][rel_path] = content + logger.info("Loaded sub-file for %s: %s (%d chars)", + skill_name, rel_path, len(content)) + except OSError as exc: + results[rel_path] = f"[Error reading {rel_path}: {exc}]" + logger.warning("Failed to load sub-file %s/%s: %s", + skill_name, rel_path, exc) + + return results + + def list_sub_files(self, skill_name: str) -> list[str]: + """List available sub-files for a skill.""" + skill_dir = self.skills_root / f"{skill_name}.d" + if not skill_dir.is_dir(): + return [] + return sorted( + str(p.relative_to(skill_dir)) + for p in skill_dir.rglob("*") + if p.is_file() + ) + + # ── Cache management ─────────────────────────────────────────────── + + def clear_cache(self, skill_name: str | None = None) -> None: + """Clear cached prompts. If skill_name is None, clears all.""" + if skill_name is None: + self._phase2_cache.clear() + self._phase3_cache.clear() + else: + self._phase2_cache.pop(skill_name, None) + self._phase3_cache.pop(skill_name, None) + + def get_injection_context( + self, + skill_name: str, + active_tools: set[str], + include_sub_files: bool = False, + ) -> dict[str, Any]: + """Build the complete injection context for a skill. + + Returns a dict with all phases assembled, ready for the + dispatcher to send back to the LLM. + """ + skill = self.resolver.resolve(skill_name) + missing = self.resolver.check_dependencies(skill_name, active_tools) + + context: dict[str, Any] = { + "skill_name": skill.name, + "description": skill.description, + "category": skill.category, + "missing_deps": missing, + "ready": len(missing) == 0, + "full_prompt": self.get_full_prompt(skill_name) if not missing else "", + } + + if include_sub_files and not missing: + available_subs = self.list_sub_files(skill_name) + if available_subs: + context["sub_files"] = self.load_sub_files( + skill_name, available_subs[:5] # limit to 5 sub-files + ) + + return context diff --git a/src/ai_lsc/agents/skill_resolver.py b/src/ai_lsc/agents/skill_resolver.py new file mode 100644 index 0000000..c746d3d --- /dev/null +++ b/src/ai_lsc/agents/skill_resolver.py @@ -0,0 +1,276 @@ +""" +AI-LSC — Enhanced skill resolver with dependency checking. + +Extends the base ``SkillRuntimeResolver`` with: + - Structured skill metadata from ``.skill.json`` companion files + - Tool dependency resolution (skills that require running services) + - Trigger-keyword matching for automatic skill activation + - Skill categorization and filtering + +Skill file layout +----------------- +A skill can now be accompanied by a ``.skill.json`` metadata file:: + + skills/ + rag-analyst ← Modelfile with SYSTEM block + rag-analyst.skill.json ← Structured metadata + +The ``.skill.json`` format:: + + { + "name": "rag-analyst", + "description": "Analyze documents using RAG pipeline", + "required_tools": ["qdrant", "ollama"], + "triggers": ["analyze document", "search knowledge base"], + "input_schema": { ... }, + "category": "analysis" + } + +Usage +----- + resolver = EnhancedSkillResolver(skills_root, registry_data) + skill = resolver.resolve("rag-analyst") + matches = resolver.find_by_trigger("analyze the quarterly report") +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + + +class SkillDefinition: + """Structured metadata for a single skill. + + Parameters + ---------- + name : + Skill identifier (matches the Modelfile filename). + description : + Human-readable description. + system_prompt : + Extracted SYSTEM block from the Modelfile. + required_tools : + Tool IDs from the registry that must be running. + triggers : + Keywords/phrases that should activate this skill. + input_schema : + JSON schema for skill input parameters. + category : + Skill category for grouping/filtering. + extra : + Additional metadata from the .skill.json file. + """ + + __slots__ = ( + "name", "description", "system_prompt", + "required_tools", "triggers", "input_schema", + "category", "extra", + ) + + def __init__( + self, + name: str, + description: str = "", + system_prompt: str = "", + required_tools: list[str] | None = None, + triggers: list[str] | None = None, + input_schema: dict[str, Any] | None = None, + category: str = "general", + extra: dict[str, Any] | None = None, + ) -> None: + self.name = name + self.description = description + self.system_prompt = system_prompt + self.required_tools = required_tools or [] + self.triggers = triggers or [] + self.input_schema = input_schema + self.category = category + self.extra = extra or {} + + def to_dict(self) -> dict[str, Any]: + """Serialize to JSON-safe dict.""" + return { + "name": self.name, + "description": self.description, + "has_system_prompt": bool(self.system_prompt), + "required_tools": self.required_tools, + "triggers": self.triggers, + "category": self.category, + **self.extra, + } + + +class EnhancedSkillResolver: + """Enhanced skill resolver with metadata and dependency checking. + + Parameters + ---------- + skills_root : + Path to the skills directory. + registry_data : + Full registry dict for dependency resolution. + """ + + def __init__( + self, + skills_root: str | Path, + registry_data: dict[str, dict[str, Any]] | None = None, + ) -> None: + self.skills_root = Path(skills_root) + self.registry = registry_data or {} + self._cache: dict[str, SkillDefinition] = {} + + # ── Skill resolution ──────────────────────────────────────────── + + def resolve(self, skill_name: str) -> SkillDefinition: + """Resolve a skill by name, loading metadata from disk.""" + if skill_name in self._cache: + return self._cache[skill_name] + + skill_file = self.skills_root / skill_name + meta_file = self.skills_root / f"{skill_name}.skill.json" + + # Extract system prompt from Modelfile + system_prompt = self._extract_system_prompt(skill_file) + + # Load metadata from companion JSON + meta = self._load_skill_meta(meta_file) + + definition = SkillDefinition( + name=meta.get("name", skill_name), + description=meta.get( + "description", + self._extract_description(skill_file), + ), + system_prompt=system_prompt, + required_tools=meta.get("required_tools", []), + triggers=meta.get("triggers", []), + input_schema=meta.get("input_schema"), + category=meta.get("category", "general"), + extra=meta, + ) + self._cache[skill_name] = definition + return definition + + # ── Trigger matching ───────────────────────────────────────────── + + def find_by_trigger( + self, text: str, + ) -> list[SkillDefinition]: + """Find skills whose triggers match the given text. + + Used for automatic skill activation when a user message + contains trigger keywords. + """ + text_lower = text.lower() + matches: list[SkillDefinition] = [] + for name in self._scan_skill_files(): + skill = self.resolve(name) + for trigger in skill.triggers: + if trigger.lower() in text_lower: + matches.append(skill) + break + return matches + + # ── Dependency checking ───────────────────────────────────────── + + def check_dependencies( + self, + skill_name: str, + active_tools: set[str], + ) -> list[str]: + """Return required tools that are not yet running. + + Parameters + ---------- + skill_name : + The skill to check. + active_tools : + Set of currently active tool IDs. + """ + skill = self.resolve(skill_name) + return [ + t for t in skill.required_tools + if t not in active_tools + ] + + def get_skills_for_active_tools( + self, + active_tools: set[str], + ) -> list[SkillDefinition]: + """Return all skills whose dependencies are satisfied.""" + results: list[SkillDefinition] = [] + for name in self._scan_skill_files(): + skill = self.resolve(name) + missing = self.check_dependencies(name, active_tools) + if not missing: + results.append(skill) + return results + + # ── Listing ────────────────────────────────────────────────────── + + def list_all(self) -> list[SkillDefinition]: + """Return all skill definitions.""" + return [self.resolve(n) for n in self._scan_skill_files()] + + def list_by_category( + self, category: str, + ) -> list[SkillDefinition]: + """Return skills filtered by category.""" + return [ + s for s in self.list_all() + if s.category == category + ] + + # ── Internal helpers ──────────────────────────────────────────── + + def _scan_skill_files(self) -> list[str]: + """Return names of Modelfile skill definitions.""" + if not self.skills_root.is_dir(): + return [] + return sorted( + p.name for p in self.skills_root.iterdir() + if p.is_file() and not p.name.endswith(".skill.json") + and not p.name.endswith(".json") + ) + + def _extract_system_prompt(self, path: Path) -> str: + """Extract SYSTEM block from a Modelfile.""" + if not path.exists(): + return "" + import re + try: + content = path.read_text(encoding="utf-8", errors="ignore") + except OSError: + return "" + patterns = [ + (r'SYSTEM\s+"""(.*?)"""', re.DOTALL | re.IGNORECASE), + (r'SYSTEM\s+"(.*?)"', re.IGNORECASE), + ] + return next( + (m.group(1).strip() + for pattern, flags in patterns + for m in [re.search(pattern, content, flags)] + if m), + "", + ) + + def _extract_description(self, path: Path) -> str: + """Extract a one-line description from a Modelfile.""" + prompt = self._extract_system_prompt(path) + if not prompt: + return "" + first_line = prompt.split("\n")[0].strip() + return first_line[:200] if first_line else "" + + @staticmethod + def _load_skill_meta(path: Path) -> dict[str, Any]: + """Load metadata from a .skill.json companion file.""" + if not path.exists(): + return {} + try: + return json.loads(path.read_text(encoding="utf-8")) + except (json.JSONDecodeError, OSError): + return {} diff --git a/src/ai_lsc/agents/tool_bridge.py b/src/ai_lsc/agents/tool_bridge.py new file mode 100644 index 0000000..ae68176 --- /dev/null +++ b/src/ai_lsc/agents/tool_bridge.py @@ -0,0 +1,147 @@ +""" +AI-LSC — Registry-to-function-calling schema translator. + +``ToolBridge`` reads the 115-tool registry and generates OpenAI-compatible +tool schemas that describe which actions an LLM can take. It also enriches +schemas with context from the registry (descriptions, layers, ports). + +Usage +----- + bridge = ToolBridge(registry_mgr) + schemas = bridge.generate_all_schemas() + # Pass schemas to Ollama, LibreChat, or OpenWebUI +""" + +from __future__ import annotations + +from typing import Any + +from ai_lsc.agents.schema import ( + CORE_SCHEMAS, + SCHEMA_BY_NAME, + _make_schema, +) +from ai_lsc.constants import DEFAULT_PORTS + + +class ToolBridge: + """Translates the AI-LSC registry into function-calling tool schemas. + + Parameters + ---------- + registry_data : + The full registry dict from ``RegistryManager.get_all_tools()``. + active_tools : + Set of tool IDs currently active in the pipeline (from + ``PipelineState.active_tools``). Used to annotate which + tools are available vs. just registered. + """ + + def __init__( + self, + registry_data: dict[str, dict[str, Any]], + active_tools: set[str] | None = None, + ) -> None: + self.registry = registry_data + self.active_tools = active_tools or set() + + # ── Schema generation ──────────────────────────────────────────── + + def generate_all_schemas(self) -> list[dict[str, Any]]: + """Return the complete list of tool schemas for function calling. + + This merges the 9 core action schemas with per-tool annotations + for tools that have web interfaces or are Ollama models. + """ + schemas = list(CORE_SCHEMAS) + + # Annotate list_tools with available tool IDs + list_schema = SCHEMA_BY_NAME["list_available_tools"] + tool_names = sorted(self.registry.keys()) + list_desc = ( + f"{list_schema['function']['description']} " + f"Known tools: {', '.join(tool_names[:20])}" + f"{'...' if len(tool_names) > 20 else ''}. " + f"Active: {', '.join(sorted(self.active_tools)) or 'none'}." + ) + schemas.append(_make_schema( + name="list_available_tools", + description=list_desc, + properties=list_schema["function"]["parameters"]["properties"], + required=list_schema["function"]["parameters"]["required"], + )) + + return schemas + + def generate_tool_summary(self) -> str: + """Return a human-readable summary of all registered tools. + + Designed to be injected as context into the LLM's system prompt + so it knows what tools are available without needing a tool call. + """ + lines = ["AI-LSC Managed Tools:", "=" * 40] + for tool_id, meta in sorted(self.registry.items()): + status = "ACTIVE" if tool_id in self.active_tools else "available" + port = meta.get("launcher", {}).get("default_port") + port_str = f" :{port}" if port else "" + desc = meta.get("description", "No description") + flags = meta.get("flags", {}) + flags_str = [] + if flags.get("has_web"): + flags_str.append("web") + if flags.get("is_ollama"): + flags_str.append("ollama") + if flags.get("has_cli"): + flags_str.append("cli") + flag_str = f" [{','.join(flags_str)}]" if flags_str else "" + lines.append( + f" {tool_id}{port_str} — {desc} ({status}){flag_str}" + ) + return "\n".join(lines) + + # ── Tool lookup helpers ─────────────────────────────────────────── + + def get_tool_info(self, tool_id: str) -> dict[str, Any]: + """Return registry metadata for a single tool, or empty dict.""" + return self.registry.get(tool_id, {}) + + def get_tools_by_layer(self, layer: str) -> list[tuple[str, dict]]: + """Return all tools in a given layer.""" + return [ + (tid, meta) for tid, meta in self.registry.items() + if meta.get("layer") == layer + ] + + def get_tools_by_flag( + self, flag: str, value: bool = True + ) -> list[tuple[str, dict]]: + """Return tools matching a specific flag (e.g. 'has_web').""" + return [ + (tid, meta) for tid, meta in self.registry.items() + if meta.get("flags", {}).get(flag) == value + ] + + def get_web_tools(self) -> list[tuple[str, dict]]: + """Return all tools with web interfaces.""" + return self.get_tools_by_flag("has_web") + + def get_ollama_tools(self) -> list[tuple[str, dict]]: + """Return all Ollama-related tools.""" + return self.get_tools_by_flag("is_ollama") + + def suggest_model_for_task(self, task_type: str) -> str: + """Suggest an appropriate Ollama model tier for a task type. + + This mirrors the Layer 1 routing logic from the agentic + architecture template. + """ + routing: dict[str, str] = { + "document": "70b", + "chart": "70b", + "web": "70b", + "script": "32b", + "analysis": "70b", + "classification": "8b", + "clarification": "14b", + } + return routing.get(task_type, "32b") diff --git a/src/ai_lsc/chat/__init__.py b/src/ai_lsc/chat/__init__.py new file mode 100644 index 0000000..c1f675f --- /dev/null +++ b/src/ai_lsc/chat/__init__.py @@ -0,0 +1 @@ +"""AI-LSC chat sub-package.""" diff --git a/src/ai_lsc/chat/api.py b/src/ai_lsc/chat/api.py new file mode 100644 index 0000000..8db103c --- /dev/null +++ b/src/ai_lsc/chat/api.py @@ -0,0 +1,165 @@ +""" +AI-LSC — Chat API thread-pool worker. + +Isolates all network I/O (Ollama ``/api/chat`` endpoint) from the GUI +main loop using Qt's ``QThreadPool`` + ``QRunnable`` pattern. + +Architecture +------------ +``ApiRunnable`` is submitted to the thread pool. When the HTTP call +completes (or fails), results are delivered back to the main thread +via ``WorkerSignals.result`` — a Qt Signal that the UI connects to +with a slot running on the main thread. + +No UI widgets are imported here; only ``PySide6.QtCore`` for the +Signal / Runnable machinery. + +Availability +------------- +If PySide6 is not installed this module still imports successfully but +``WorkerSignals`` and ``ApiRunnable`` will be ``None``. The top-level +``__init__.py`` handles this gracefully. +""" + +from __future__ import annotations + +import json +import urllib.error +import urllib.request + +try: + from PySide6.QtCore import QObject, QRunnable, Signal + _HAS_QT = True +except ImportError: + _HAS_QT = False + + +# ── Signal emitter (thread-safe bridge to main loop) ─────────────────── + +if _HAS_QT: + class WorkerSignals(QObject): + """Emits results from a background thread back to the main thread. + + ``result`` carries three values: + 1. ``identity`` (str) — display name for the response source. + 2. ``reply`` (str) — the assistant's response or error message. + 3. ``history_append`` (str | None) — text to append to the chat + history, or *None* if the response was an error. + """ + result = Signal(str, str, object) + + +# ── API runnable ───────────────────────────────────────────────────── + +if _HAS_QT: + class ApiRunnable(QRunnable): + """Background task that calls the Ollama ``/api/chat`` endpoint. + + Parameters + ---------- + model_id : + Model identifier string passed to the Ollama API (e.g. + ``"llama3:8b"``). + port_id : + Port number of the running Ollama server. + history_snapshot : + List of ``{"role": …, "content": …}`` message dicts sent as + the conversation history. + temperature : + Sampling temperature (0.0–2.0). + max_tokens : + Maximum tokens to generate (``num_predict`` in Ollama API). + timeout : + HTTP request timeout in seconds. + """ + + def __init__( + self, + model_id: str, + port_id: int, + history_snapshot: list[dict], + temperature: float = 0.7, + max_tokens: int = 4096, + timeout: float = 120.0, + ) -> None: + super().__init__() + self.model_id = model_id + self.port_id = port_id + self.history_snapshot = history_snapshot + self.temperature = temperature + self.max_tokens = max_tokens + self.timeout = timeout + self.signals = WorkerSignals() + self.setAutoDelete(True) + + def run(self) -> None: + identity, reply, history_append = self.model_id, "", None + try: + url = f"http://127.0.0.1:{self.port_id}/api/chat" + payload = json.dumps({ + "model": self.model_id, + "messages": self.history_snapshot, + "stream": False, + "options": { + "temperature": self.temperature, + "num_predict": self.max_tokens, + }, + }).encode("utf-8") + req = urllib.request.Request( + url, + data=payload, + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=self.timeout) as resp: + data = json.loads(resp.read().decode("utf-8")) + reply = data.get("message", {}).get("content", "").strip() + + if not reply: + identity, reply = "? System Guard", ( + "Received empty execution token from model. " + "Core might lack system context space allocation." + ) + else: + history_append = reply + + except urllib.error.HTTPError as he: + identity = "? Ollama Stack Exception" + err_body = self._safe_read_error(he) + reply = ( + f"Ollama Engine rejected execution layout " + f"(Code {he.code}).\n\n" + f"[Reason]: {err_body}\n\n" + "*Troubleshooting:*\n" + "1. Did you click 'Build/Register Selected Skills' first?\n" + "2. Ensure the base model has been pulled." + ) + + except urllib.error.URLError as ue: + identity = "? Cluster Port Offline" + reply = ( + f"Failed to connect to Ollama API on port " + f"[{self.port_id}].\n\n" + f"[Details]: {ue.reason}\n\n" + "*Action Required*: Verify Ollama is [ LIVE ] on Dashboard." + ) + + except Exception as e: + identity = "? Exception Tracker" + reply = f"Unhandled background interruption:\n{e}" + + self.signals.result.emit(identity, reply, history_append) + + @staticmethod + def _safe_read_error(http_error) -> str: + """Best-effort extraction of the error body from an HTTP error.""" + try: + body = json.loads( + http_error.read().decode("utf-8", errors="ignore") + ) + return body.get("error", str(body)) + except Exception: + return "Internal structural parser issue." +else: + WorkerSignals = None # type: ignore[assignment, misc] + ApiRunnable = None # type: ignore[assignment, misc] diff --git a/src/ai_lsc/constants.py b/src/ai_lsc/constants.py new file mode 100644 index 0000000..4c58e04 --- /dev/null +++ b/src/ai_lsc/constants.py @@ -0,0 +1,185 @@ +""" +AI-LSC v3.0 — Application-wide constants. + +Release codename: Ankh of Jah + +Pure data: file names, schema version, required directories, default ports, +status styles, log colours, service licences, tree-skip patterns, and the +navigation layer order. No behaviour lives here. +""" + +import os + +# ── Base directory ───────────────────────────────────────────────────── +# Overridable via AI_LSC_BASE_DIR environment variable. +# Bootstrap sets this; the app resolves everything relative to it. +BASE_DIR: str = os.environ.get("AI_LSC_BASE_DIR", "/mnt/AI") + +# ── Filenames ──────────────────────────────────────────────────────────── +APP_VERSION: str = "3.0.5" +APP_CODENAME: str = "Ankh of Jah" +APP_DISPLAY_NAME: str = f"AI - Local Stack Control v{APP_VERSION} - http://dcos.net" +CONFIG_FILE: str = "controller_config.json" +APP_ICON_FILE: str = "ai-lsc-logo.png" +STATE_FILE_NAME: str = "pipeline_state.json" +PIPELINE_FILE_NAME: str = "pipeline.json" +STACK_SCHEMA_VERSION: str = "3.0" +MANIFEST_FILE_NAME: str = ".ai-lsc-project.json" +JCL_FILE_NAME: str = ".ai-lsc-jobs.json" + +# ── Required sub-directories under BASE_DIR ──────────────────── +REQUIRED_DIRS: list[str] = [ + "bin", + "tools", + "registry", + "config", + "cache", + "runtime", + "logs", + "skills", + "datasets/raw", + "models/ollama", + "models/chroma", + "workspaces/hermes", + "workspaces/openwebui", + "workspaces/n8n", + "tmp", + "exports", + "data", + "containers", + "configs", + "pipelines", + "dashboards", + "backups", +] + +# ── Default ports for every known tool ─────────────────────────────────── +DEFAULT_PORTS: dict[str, int | None] = { + "postgresql": 5432, "mariadb": 3306, "redis": 6379, + "sqlite3": None, "python": None, "cuda": None, + "ollama": 11434, "llamacpp": 8080, "vllm": 8000, + "litellm": 4000, "chromadb": 8000, "whisper": None, + "docling": None, "aider": None, "claude_code": None, + "fabric": None, "btop": None, "glances": 61208, + "crewai": None, "autogen": None, + "hermes": 17050, "openwebui": 8080, "anythingllm": 3001, + "flowise": 3000, "dify": 80, "stack_exporter": None, + # Agentic OS stack additions + "qdrant": 6333, "librechat": 3080, "n8n": 5678, +} + +# ── UI status label formatting ────────────────────────────────────────── +STATUS_STYLES: dict[bool, tuple[str, str]] = { + True: ("[ LIVE ]", "#2ecc71"), + False: ("[ OFFLINE ]", "#7f8c8d"), +} + +# ── Log source colours for the activity feed ──────────────────────────── +LOG_SOURCE_COLORS: dict[str, str] = { + "Ollama": "#e67e22", "Tmux": "#3498db", + "Installer": "#2ecc71", "Audit": "#f39c12", + "Container": "#9b59b6", "SkillRuntime": "#1abc9c", + "Pipeline": "#e74c3c", "Lifecycle": "#2980b9", + "SelfHeal": "#8e44ad", "Compiler": "#e67e22", +} +LOG_COLOR_DEFAULT: str = "#bdc3c7" + +# ── Service licence notices ──────────────────────────────────────────── +SERVICE_LICENSES: dict[str, str] = { + "Open WebUI": "MIT License: github.com/open-webui/open-webui", + "Aider": "Apache License 2.0: github.com/aider-chat/aider", + "Hermes": "MIT License (Hermes Orchestrator)", + "Odysseus": "MIT License (Local/Proprietary)", + "Dify": "Dify Open Source License: github.com/langgenius/dify", + "Flowise": "Apache License 2.0: github.com/FlowiseAI/Flowise", + "AnythingLLM": "MIT License: github.com/Mintplex-Labs/anything-llm", + "LiteLLM Proxy": "MIT License: github.com/BerriAI/litellm", + "Claude Code": "Anthropic Terms of Service: anthropic.com", + "CrewAI": "MIT License: github.com/joaomdmoura/crewAI", + "AutoGen": "MIT License: github.com/microsoft/autogen", + "LangChain": "MIT License: github.com/langchain-ai/langchain", + "LangFlow": "Apache License 2.0: github.com/langflow-ai/langflow", + "Ollama": "MIT License: github.com/ollama/ollama", + "llama.cpp": "MIT License: github.com/ggerganov/llama.cpp", + "Grafana": "AGPL-3.0: github.com/grafana/grafana", + "Prometheus": "Apache License 2.0: github.com/prometheus/prometheus", + "Qdrant": "Apache License 2.0: github.com/qdrant/qdrant", + "n8n": "Apache License 2.0 (with Fair Code): github.com/n8n-io/n8n", + "LibreChat": "MIT License: github.com/danny-avila/LibreChat", + "InvokeAI": "MIT License: github.com/invoke-ai/InvokeAI", + "Terraform": "BSL-1.1: github.com/hashicorp/terraform", + "Ansible": "GPL-3.0: github.com/ansible/ansible", + "Pulumi": "Apache License 2.0: github.com/pulumi/pulumi", + "OpenTofu": "MPL-2.0: github.com/opentofu/opentofu", +} + +# ── Tree-widget skip patterns ────────────────────────────────────────── +TREE_SKIP_PATTERNS: set[str] = {".", "__pycache__", "node_modules", "vendor"} + +# ── Navigation layer order for the sidebar rack diagram ─────────────── +NAV_LAYER_ORDER: list[str] = [ + "Host Platform", "Development Environment", "GPU Runtime", + "Inference Engines", "Distributed Runtime", "AI Endpoints", + "Data & Knowledge Pipelines", "Automation & Execution", + "Observability", "Intelligent Routing", "User Interfaces", + "DevOps", "Knowledge Management", +] + +# ── Ollama server candidate paths (probed in order) ──────────────── +# The runtime probes these paths to locate the ollama server binary or +# service data. First match wins. +OLLAMA_SERVER_CANDIDATES: list[str] = [ + "ollama", # /mnt/AI/ollama + "tools/ollama", # /mnt/AI/tools/ollama + "runtime/ollama", # /mnt/AI/runtime/ollama + "bin/ollama", # /mnt/AI/bin/ollama +] + +# ── Model tier routing (reserved for v4.0 agentic layer) ────────── +MODEL_TIERS: dict[str, dict] = { + "8b": {"max_vram_gb": 8, "desc": "Classification, routing, intent detection"}, + "14b": {"max_vram_gb": 14, "desc": "Utility, summarization, clarification"}, + "32b": {"max_vram_gb": 32, "desc": "Reasoning, analysis, code generation"}, + "70b": {"max_vram_gb": 70, "desc": "Heavy generation, complex reasoning, documents"}, +} + +# ── Agent runtime constants (reserved for v4.0 agentic layer) ──── +AGENT_DEFAULT_MODEL: str = "qwen2.5:32b" +AGENT_MAX_ROUNDS: int = 20 +CLARIFICATION_SKIP_THRESHOLD: float = 0.95 +CLARIFICATION_CONFIRM_THRESHOLD: float = 0.70 + +# ── Qt Stylesheets ────────────────────────────────────────────────────── +GLOBAL_STYLE: str = """ +QWidget { background-color: #161616; color: #e0e0e0; + font-family: 'Segoe UI', Arial, sans-serif; font-size: 13px; } +QGroupBox { border: 1px solid #333; border-radius: 6px; margin-top: 14px; + padding-top: 10px; font-weight: bold; color: #a5d6a7; } +QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; + padding: 0 5px; left: 10px; } +QPushButton { background-color: #2c3e50; color: white; border: 1px solid #1a252f; + border-radius: 4px; padding: 6px 12px; font-weight: bold; } +QPushButton:hover { background-color: #34495e; } +QPushButton:pressed { background-color: #1a252f; } +QLineEdit, QTextEdit, QComboBox, QSpinBox, QDoubleSpinBox { + background-color: #1e1e1e; border: 1px solid #444; + border-radius: 4px; padding: 5px; color: white; } +QTabWidget::pane { border: 1px solid #333; background-color: #1a1a1a; + border-radius: 4px; } +QTabBar::tab { background-color: #222; border: 1px solid #333; padding: 8px 15px; + margin-right: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; } +QTabBar::tab:selected { background-color: #3498db; color: white; font-weight: bold; } +QTableWidget, QTreeWidget, QListWidget { background-color: #1e1e1e; + gridline-color: #333; border: 1px solid #333; border-radius: 4px; } +QHeaderView::section { background-color: #2c3e50; color: white; padding: 4px; + border: 1px solid #1a252f; font-weight: bold; } +""" + +SIDEBAR_TREE_STYLE: str = """ + QTreeWidget { background-color: #111111; border: none; color: #bdc3c7; + font-family: 'Segoe UI'; font-size: 11px; } + QTreeWidget::item { padding: 6px; border-bottom: 1px solid #161616; } + QTreeWidget::item:hover { background-color: #1c1c1c; color: #fff; } + QTreeWidget::item:selected { background-color: #2c3e50; color: #2ecc71; + font-weight: bold; } +""" diff --git a/src/ai_lsc/guardrails.py b/src/ai_lsc/guardrails.py new file mode 100644 index 0000000..149bb8e --- /dev/null +++ b/src/ai_lsc/guardrails.py @@ -0,0 +1,290 @@ +#!/usr/bin/env python3 +"""AI-LSC Framework Guardrail Validator. + +Runs after any agent edit to catch: + 1. Bloat — files that grew >200% without architectural reason + 2. Size — files exceeding max_module_lines (default 300) + 3. Subprocess leakage — UI files touching subprocess/psutil directly + 4. Parent coupling — UI files reaching into self.parent instead of protocol + 5. os.path contamination — should use pathlib + 6. Lint — ruff check (if available) + +Usage: + python3 guardrails.py # validate ai_lsc/ in cwd + python3 guardrails.py --baseline # snapshot current sizes + python3 guardrails.py --fix # auto-fix ruff issues +""" + +from __future__ import annotations + +import ast +import json +import os +import sys +from pathlib import Path + +BASE_DIR = Path(__file__).resolve().parent +BASELINE_FILE = BASE_DIR / ".guardrail_baseline.json" +MAX_MODULE_LINES = 300 +MAX_GROWTH_FACTOR = 2.0 + +# Directories where subprocess/psutil calls are ALLOWED +RUNTIME_ALLOWED_DIRS = {"utils", "runtime", "core", "scripts", "agents"} + +# Directories where os.path usage is ALLOWED (legacy tolerance) +OSPATH_ALLOWED_DIRS = {"utils"} + +# Directories where self.parent access is ALLOWED +PARENT_ALLOWED_DIRS = set() + + +def get_file_sizes() -> dict[str, int]: + """Return {relative_path: line_count} for every .py in the package.""" + sizes: dict[str, int] = {} + for py_file in sorted(BASE_DIR.rglob("*.py")): + rel = py_file.relative_to(BASE_DIR) + try: + sizes[str(rel)] = sum(1 for _ in py_file.open(encoding="utf-8")) + except Exception: + sizes[str(rel)] = -1 + return sizes + + +def save_baseline(sizes: dict[str, int]) -> None: + BASELINE_FILE.write_text( + json.dumps(sizes, indent=2, sort_keys=True), encoding="utf-8" + ) + print(f"Baseline saved: {len(sizes)} files tracked in {BASELINE_FILE}") + + +def load_baseline() -> dict[str, int]: + if not BASELINE_FILE.exists(): + return {} + return json.loads(BASELINE_FILE.read_text(encoding="utf-8")) + + +def check_bloat(sizes: dict[str, int], baseline: dict[str, int]) -> list[str]: + """Detect files that grew > MAX_GROWTH_FACTOR without baseline.""" + errors: list[str] = [] + for path, new_size in sizes.items(): + if new_size <= 0: + continue + old_size = baseline.get(path, 0) + if old_size <= 0: + continue # new file, skip + if new_size > old_size * MAX_GROWTH_FACTOR: + growth_pct = (new_size / old_size - 1) * 100 + errors.append( + f"BLOAT: {path} grew {old_size} -> {new_size} lines " + f"(+{growth_pct:.0f}%, limit {MAX_GROWTH_FACTOR}x)" + ) + return errors + + +def check_size_limits(sizes: dict[str, int]) -> list[str]: + """Flag files exceeding max module line count.""" + errors: list[str] = [] + for path, size in sizes.items(): + if size > MAX_MODULE_LINES and not path.endswith("__init__.py"): + errors.append( + f"OVERSIZED: {path} is {size} lines " + f"(limit {MAX_MODULE_LINES})" + ) + return errors + + +def check_subprocess_leakage() -> list[str]: + """Flag UI files that directly call subprocess/psutil.""" + errors: list[str] = [] + dangerous_patterns = [ + "subprocess.run", "subprocess.Popen", "subprocess.call", + "threading.Thread", "os.system", "os.popen", + "psutil.process_iter", "psutil.cpu_percent", + ] + for py_file in sorted(BASE_DIR.rglob("*.py")): + rel = str(py_file.relative_to(BASE_DIR)) + parts = rel.split(os.sep) + # Skip if in allowed directory + if any(part in RUNTIME_ALLOWED_DIRS for part in parts): + continue + try: + source = py_file.read_text(encoding="utf-8") + except Exception: + continue + tree = ast.parse(source, filename=rel) + for node in ast.walk(tree): + if isinstance(node, ast.Attribute): + full = f"{node.value}.{node.attr}" if isinstance( + node.value, ast.Name + ) else None + if full and full in dangerous_patterns: + errors.append( + f"SUBPROCESS_LEAK: {rel}:{node.lineno} " + f"calls {full} (should delegate to runtime/)" + ) + return errors + + +def check_parent_coupling() -> list[str]: + """Flag UI files accessing self.parent.* directly.""" + errors: list[str] = [] + for py_file in sorted(BASE_DIR.rglob("*.py")): + rel = str(py_file.relative_to(BASE_DIR)) + parts = rel.split(os.sep) + if not any(part in PARENT_ALLOWED_DIRS for part in parts): + pass # check all files + try: + source = py_file.read_text(encoding="utf-8") + except Exception: + continue + tree = ast.parse(source, filename=rel) + for node in ast.walk(tree): + if isinstance(node, ast.Attribute): + if ( + isinstance(node.value, ast.Attribute) + and isinstance(node.value.value, ast.Name) + and node.value.value.id == "self" + and node.value.attr == "parent" + ): + errors.append( + f"PARENT_COUPLING: {rel}:{node.lineno} " + f"accesses self.parent.{node.attr} " + f"(use MainWindowProtocol instead)" + ) + return errors + + +def check_ospath_contamination() -> list[str]: + """Flag files using os.path instead of pathlib.""" + errors: list[str] = [] + for py_file in sorted(BASE_DIR.rglob("*.py")): + rel = str(py_file.relative_to(BASE_DIR)) + parts = rel.split(os.sep) + if any(part in OSPATH_ALLOWED_DIRS for part in parts): + continue + try: + source = py_file.read_text(encoding="utf-8") + except Exception: + continue + count = source.count("os.path.") + if count > 0: + errors.append( + f"OSPATH: {rel} has {count} os.path.* calls " + f"(use pathlib.Path)" + ) + return errors + + +def run_ruff(fix: bool = False) -> list[str]: + """Run ruff if available, return error output.""" + import shutil + ruff_bin = shutil.which("ruff") + if not ruff_bin: + try: + import ruff as _ # noqa: F401 + ruff_bin = sys.executable + " -m ruff" + except ImportError: + return ["RUFF: not installed (pip install ruff)"] + import subprocess + cmd = [sys.executable, "-m", "ruff", "check", str(BASE_DIR)] + if fix: + cmd.append("--fix") + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=30 + ) + output = result.stdout.strip() + result.stderr.strip() + if output: + return [f"RUFF:\n{output}"] + return [] + except Exception as e: + return [f"RUFF: failed to run: {e}"] + + +def main() -> int: + args = set(sys.argv[1:]) + + if "--baseline" in args: + sizes = get_file_sizes() + save_baseline(sizes) + return 0 + + sizes = get_file_sizes() + baseline = load_baseline() + + all_errors: list[str] = [] + + print("=" * 60) + print("AI-LSC Framework Guardrail Validation") + print("=" * 60) + + # 1. Bloat check + errors = check_bloat(sizes, baseline) + if errors: + all_errors.extend(errors) + print(f"\n[FAIL] Bloat detection: {len(errors)} violations") + elif baseline: + print("\n[PASS] Bloat detection: no abnormal growth") + else: + print("\n[SKIP] Bloat detection: no baseline (run with --baseline)") + + # 2. Size limits + errors = check_size_limits(sizes) + if errors: + all_errors.extend(errors) + print(f"[FAIL] Size limits: {len(errors)} oversized modules") + else: + print(f"[PASS] Size limits: all modules under {MAX_MODULE_LINES} lines") + + # 3. Subprocess leakage + errors = check_subprocess_leakage() + if errors: + all_errors.extend(errors) + print(f"[FAIL] Subprocess leakage: {len(errors)} violations") + else: + print("[PASS] Subprocess leakage: clean") + + # 4. Parent coupling + errors = check_parent_coupling() + if errors: + all_errors.extend(errors) + print(f"[FAIL] Parent coupling: {len(errors)} violations") + else: + print("[PASS] Parent coupling: clean") + + # 5. os.path contamination + errors = check_ospath_contamination() + if errors: + all_errors.extend(errors) + print(f"[FAIL] os.path: {len(errors)} files with os.path.* calls") + else: + print("[PASS] os.path: clean") + + # 6. Ruff lint + fix_mode = "--fix" in args + errors = run_ruff(fix=fix_mode) + if errors: + all_errors.extend(errors) + print(f"[{'FIXED' if fix_mode else 'FAIL'}] Ruff lint: see above") + else: + print("[PASS] Ruff lint: clean") + + # Summary + print("\n" + "=" * 60) + if all_errors: + print(f"RESULT: {len(all_errors)} guardrail violations") + for e in all_errors: + # Truncate long ruff output + lines = e.split("\n") + for line in lines[:5]: + print(f" {line}") + if len(lines) > 5: + print(f" ... ({len(lines) - 5} more lines)") + return 1 + else: + print("RESULT: ALL GUARDRAILS PASSED") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/ai_lsc/manifest/__init__.py b/src/ai_lsc/manifest/__init__.py new file mode 100644 index 0000000..237b84b --- /dev/null +++ b/src/ai_lsc/manifest/__init__.py @@ -0,0 +1 @@ +"""AI-LSC manifest sub-package.""" diff --git a/src/ai_lsc/manifest/support.py b/src/ai_lsc/manifest/support.py new file mode 100644 index 0000000..5324812 --- /dev/null +++ b/src/ai_lsc/manifest/support.py @@ -0,0 +1,155 @@ +""" +AI-LSC — Manifest support. + +Reads and writes ``.ai-lsc-project.json`` and ``.ai-lsc-jobs.json`` +files that provide project-level context for the chat interface. +Pure filesystem + JSON work — no UI. + +Manifest schema (``.ai-lsc-project.json``):: + + { + "project": "my-project", + "description": "Brief description for AI context", + "language": "python", + "entry_point": "src/main.py", + "architecture": "System architecture notes", + "environment_notes": "Runtime environment details", + "dependencies": ["package1", "package2"], + "context_files": ["src/**/*.py", "README.md"], + "exclude": ["__pycache__", "*.pyc", ".git"] + } + +JCL schema (``.ai-lsc-jobs.json``):: + + { + "jobs": [ + {"name": "...", "command": "...", "cwd": "..."}, + ... + ] + } +""" + +from __future__ import annotations + +import glob as glob_mod +import json +from pathlib import Path +from typing import Any + +from ai_lsc.constants import MANIFEST_FILE_NAME, JCL_FILE_NAME + +# Maximum directory traversal depth when searching for manifests. +_MAX_WALK_DEPTH: int = 20 + + +class ManifestSupport: + """Static utility class for manifest and JCL file operations.""" + + @staticmethod + def discover_manifest(directory: str | Path) -> Path | None: + """Walk up from *directory* to find the nearest manifest file. + + Stops after ``_MAX_WALK_DEPTH`` iterations or when the + filesystem root is reached. + """ + current = Path(directory).resolve() + for _ in range(_MAX_WALK_DEPTH): + candidate = current / MANIFEST_FILE_NAME + if candidate.exists(): + return candidate + parent = current.parent + if parent == current: + return None + current = parent + return None + + @staticmethod + def load_manifest(path: str | Path) -> dict[str, Any]: + """Load and return the manifest dict, or ``{}`` on failure.""" + p = Path(path) + if not p.exists(): + return {} + try: + return json.loads(p.read_text(encoding="utf-8")) + except Exception: + return {} + + @staticmethod + def build_system_context(manifest: dict[str, Any]) -> str: + """Build a flat system-prompt text block from manifest data.""" + project = manifest.get("project", "Unknown Project") + description = manifest.get("description", "") + language = manifest.get("language", "") + entry = manifest.get("entry_point", "") + architecture = manifest.get("architecture", "") + environment = manifest.get("environment_notes", "") + dependencies = manifest.get("dependencies", []) + + parts = [f"Project: {project}"] + if description: + parts.append(f"Description: {description}") + if language: + parts.append(f"Language: {language}") + if entry: + parts.append(f"Entry Point: {entry}") + if architecture: + parts.append(f"Architecture: {architecture}") + if environment: + parts.append(f"Environment: {environment}") + if dependencies: + parts.append(f"Dependencies: {', '.join(dependencies)}") + + return "\n".join(parts) + + @staticmethod + def resolve_context_files( + manifest: dict[str, Any], + base_dir: str | Path, + ) -> list[str]: + """Resolve glob patterns in the manifest to real file paths.""" + base = Path(base_dir) + patterns = manifest.get("context_files", []) + exclude = set(manifest.get("exclude", [])) + files: list[str] = [] + + for pattern in patterns: + full_pattern = str(base / pattern) + matched = glob_mod.glob(full_pattern, recursive=True) + for f in matched: + if Path(f).is_file() and not any(ex in f for ex in exclude): + files.append(f) + return files + + @staticmethod + def load_jcl(path: str | Path) -> list[dict[str, Any]]: + """Load job entries from a JCL file, or ``[]`` on failure.""" + p = Path(path) + if not p.exists(): + return [] + try: + data = json.loads(p.read_text(encoding="utf-8")) + return data.get("jobs", []) + except Exception: + return [] + + @staticmethod + def create_manifest_template(path: str | Path) -> Path: + """Write a starter manifest template to *path*. + + Returns the path of the created file. + """ + p = Path(path) + template = { + "project": "my-project", + "description": "Brief project description for AI context", + "language": "python", + "entry_point": "src/main.py", + "architecture": "Describe the system architecture", + "environment_notes": "Runtime environment details", + "dependencies": ["package1", "package2"], + "context_files": ["src/**/*.py", "README.md"], + "exclude": ["__pycache__", "*.pyc", ".git", "node_modules"], + } + p.parent.mkdir(parents=True, exist_ok=True) + p.write_text(json.dumps(template, indent=4), encoding="utf-8") + return p diff --git a/src/ai_lsc/registry/__init__.py b/src/ai_lsc/registry/__init__.py new file mode 100644 index 0000000..0bf00d1 --- /dev/null +++ b/src/ai_lsc/registry/__init__.py @@ -0,0 +1 @@ +"""AI-LSC registry sub-package.""" diff --git a/src/ai_lsc/registry/defaults.py b/src/ai_lsc/registry/defaults.py new file mode 100644 index 0000000..a01fcbe --- /dev/null +++ b/src/ai_lsc/registry/defaults.py @@ -0,0 +1,3287 @@ +""" +AI-LSC — Default registry data (~1 200 lines of pure data). + +This is the *authoritative source of truth* for every tool known to the +ecosystem. On first run ``RegistryManager`` writes this dict to +``ecosystem.json``; on subsequent runs it merges in any new keys so that +the on-disk registry auto-evolves across releases without user action. + +Convention +---------- +Every entry has the same top-level shape:: + + { + "name": , + "level": <1–13 taxonomy level (int)>, + "layer": , + "role": , + "category": , + "installer": {"type": , + "pkg": , + "cmd": }, + "launcher": {"type": , + "cmd": , + "default_port": }, + "deps": [], + "description": , + "flags": {}, + } + +Launcher command placeholders +----------------------------- +``{port}``, ``{tools_root}```, ``{models_root}``, +``{workspaces_root}``, ``{base_dir}`` are resolved at launch time by +the ``ServiceRow`` dispatcher. + +Layer map +--------- +L1 Host Platform — databases, caches +L2 Development Environment — runtimes, search, parsing +L3 GPU Runtime — CUDA, optimisation +L4 Inference Engines — LLM servers +L5 Distributed Runtime — serving at scale +L6 AI Endpoints — proxies, reasoning, vision, TTS +L7 Data & Knowledge Pipelines — vector stores, crawlers, parsing +L8 Automation & Execution — agents, code gen, monitoring +L9 Observability — metrics, dashboards, tracing +L10 Intelligent Routing — reasoning, memory +L11 User Interfaces — web frontends, image gen, chat +L12 DevOps — IaC, config management, containers +L13 Knowledge Management — references, notes, documents +""" + +# NOTE: This dict is intentionally kept as a *literal* so that it can be +# round-tripped through JSON without loss. Do NOT add non-serialisable +# objects (Path, Enum, etc.) here. + +DEFAULT_REGISTRY: dict = { + # ── L1: Host Platform ────────────────────────────────────── + "postgresql": { + "name": "PostgreSQL", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "postgresql" + }, + "launcher": { + "type": "systemd", + "cmd": "postgresql", + "default_port": 5432 + }, + "deps": [], + "description": "Relational database used by many frameworks.", + "flags": {}, + "filesystem": { + "install": "", + "config": "configs/postgresql", + "data": "data/postgresql", + "logs": "logs/postgresql" + } +}, + + "mariadb": { + "name": "MariaDB", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "mariadb" + }, + "launcher": { + "type": "systemd", + "cmd": "mariadb", + "default_port": 3306 + }, + "deps": [], + "description": "Open source relational database.", + "flags": {}, + "filesystem": { + "install": "", + "config": "configs/mariadb", + "data": "data/mariadb", + "logs": "logs/mariadb" + } +}, + + "redis": { + "name": "Redis", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Cache", + "installer": { + "type": "pacman", + "pkg": "redis" + }, + "launcher": { + "type": "systemd", + "cmd": "redis", + "default_port": 6379 + }, + "deps": [], + "description": "In-memory cache and message broker.", + "flags": {}, + "filesystem": { + "install": "", + "config": "configs/redis", + "data": "data/redis", + "logs": "logs/redis" + } +}, + + "sqlite3": { + "name": "SQLite3", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "sqlite" + }, + "launcher": { + "type": "desktop", + "cmd": "sqlite3", + "default_port": None + }, + "deps": [], + "description": "C-language library implementing a SQL database engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "duckdb": { + "name": "DuckDB", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Analytical Database", + "installer": { + "type": "uv", + "pkg": "duckdb" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import duckdb; print(duckdb.__version__)\"", + "default_port": None + }, + "deps": [], + "description": "In-process analytical database with SQL support.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L2: Development Environment ──────────────────────────── + + "python": { + "name": "Python Environment", + "level": 2, + "layer": "Development Environment", + "role": "Build System", + "category": "Runtime", + "installer": { + "type": "pacman", + "pkg": "python-pip" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 --version", + "default_port": None + }, + "deps": [], + "description": "Python core interpreter and virtual environments.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "cupy": { + "name": "CuPy", + "level": 2, + "layer": "Development Environment", + "role": "GPU Acceleration", + "category": "GPU Computing", + "installer": { + "type": "uv", + "pkg": "cupy-cuda12x" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import cupy; print(cupy.__version__)\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NumPy-compatible GPU array computing library.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "ripgrep": { + "name": "ripgrep (rg)", + "level": 2, + "layer": "Development Environment", + "role": "Search", + "category": "Search Tool", + "installer": { + "type": "pacman", + "pkg": "ripgrep" + }, + "launcher": { + "type": "desktop", + "cmd": "rg --version", + "default_port": None + }, + "deps": [], + "description": "Fast recursive search tool (grep replacement).", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "fd": { + "name": "fd", + "level": 2, + "layer": "Development Environment", + "role": "Search", + "category": "Find Tool", + "installer": { + "type": "pacman", + "pkg": "fd" + }, + "launcher": { + "type": "desktop", + "cmd": "fd --version", + "default_port": None + }, + "deps": [], + "description": "Fast find command alternative.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "tree_sitter": { + "name": "tree-sitter", + "level": 2, + "layer": "Development Environment", + "role": "Parsing", + "category": "Parser", + "installer": { + "type": "uv", + "pkg": "tree-sitter" + }, + "launcher": { + "type": "desktop", + "cmd": "tree-sitter --version", + "default_port": None + }, + "deps": [], + "description": "Incremental parsing system for source code.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L3: GPU Runtime ──────────────────────────────────────── + + "cuda": { + "name": "CUDA Toolkit", + "level": 3, + "layer": "GPU Runtime", + "role": "Acceleration", + "category": "GPU", + "installer": { + "type": "pacman", + "pkg": "cuda" + }, + "launcher": { + "type": "desktop", + "cmd": "nvcc --version", + "default_port": None + }, + "deps": [], + "description": "NVIDIA CUDA parallel computing platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "apex": { + "name": "NVIDIA Apex", + "level": 3, + "layer": "GPU Runtime", + "role": "Optimization", + "category": "Mixed Precision", + "installer": { + "type": "pip", + "pkg": "apex" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import apex; print(apex.__version__)\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NVIDIA mixed precision and distributed training.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "unsloth": { + "name": "Unsloth", + "level": 3, + "layer": "GPU Runtime", + "role": "Optimization", + "category": "LLM Fine-tuning", + "installer": { + "type": "uv", + "pkg": "unsloth" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import unsloth; print('ok')\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "2x faster LLM fine-tuning with 80% less memory.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "heretic": { + "name": "Heretic", + "level": 3, + "layer": "GPU Runtime", + "role": "Abliteration", + "category": "LLM Fine-tuning", + "installer": { + "type": "git", + "pkg": "https://github.com/p-e-w/heretic", + "cmd": "pip install -e ." + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import heretic; print('ok')\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "Fully automatic censorship/safety-alignment removal for transformer-based LLMs via optimized abliteration. Modifies model weights directly.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L4: Inference Engines ────────────────────────────────── + + "ollama": { + "name": "Ollama", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "script", + "pkg": "ollama", + "cmd": "curl -fsSL https://ollama.com/install.sh | sh" + }, + "launcher": { + "type": "tmux", + "cmd": "OLLAMA_HOST=0.0.0.0:{port} OLLAMA_MODELS={models_root}/ollama ollama serve", + "default_port": 11434 + }, + "deps": [], + "description": "Local LLM runner and model manager.", + "flags": { + "is_ollama": True, + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/ollama", + "models": "models/ollama", + "logs": "logs/ollama" + } +}, + + "llamacpp": { + "name": "llama.cpp", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/ggerganov/llama.cpp", + "post_install": "make", + "update_cmd": "git pull --ff-only && make clean && make" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/llamacpp && make && ./server --port {port}", + "default_port": 8080 + }, + "deps": [], + "description": "Port of Facebook's LLaMA model in C/C++.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "koboldcpp": { + "name": "KoboldCPP", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/LostRuins/koboldcpp", + "post_install": "make", + "update_cmd": "git pull --ff-only && make clean && make" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/koboldcpp && make && ./koboldcpp --port {port}", + "default_port": 5001 + }, + "deps": [], + "description": "GGUF-based LLM inference with CUDA/Vulkan.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": True + } +}, + + "llamafile": { + "name": "Llamafile", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Single-File LLM", + "installer": { + "type": "script", + "pkg": "llamafile", + "cmd": "mkdir -p {tools_root}/llamafile && curl -L -o {tools_root}/bin/llamafile https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile && chmod +x {tools_root}/bin/llamafile" + }, + "launcher": { + "type": "desktop", + "cmd": "{tools_root}/bin/llamafile", + "default_port": None + }, + "deps": [], + "description": "Distribute and run LLMs in a single file.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "turbollm": { + "name": "TurboLLM", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/turbollm", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/turbollm && python3 -m turbollm serve --port {port}", + "default_port": 8000 + }, + "deps": [ + "cuda" + ], + "description": "Fast LLM serving with tensor parallelism.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "airllm": { + "name": "AirLLM", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Efficient LLM", + "installer": { + "type": "git", + "pkg": "https://github.com/liguodongiot/llm-airforce", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/airllm && python3 -m airllm serve --port {port}", + "default_port": 8001 + }, + "deps": [ + "cuda" + ], + "description": "Memory-efficient 70B LLM inference on 4GB GPUs.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "locally_uncensored": { + "name": "Locally-Uncensored", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Uncensored Models", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/locally-uncensored" + }, + "launcher": { + "type": "desktop", + "cmd": "ollama list", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Curated uncensored model collection and tooling.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L5: Distributed Runtime ──────────────────────────────── + + "vllm": { + "name": "vLLM", + "level": 5, + "layer": "Distributed Runtime", + "role": "Scaling", + "category": "LLM Serving", + "installer": { + "type": "uv", + "pkg": "vllm", + "env_overrides": { + "HF_HOME": "{base_dir}/cache/huggingface", + "TRANSFORMERS_CACHE": "{base_dir}/cache/huggingface" + } + }, + "launcher": { + "type": "tmux", + "cmd": "python -m vllm.entrypoints.openai.api_server --port {port}", + "default_port": 8000 + }, + "deps": [ + "cuda" + ], + "description": "High-throughput and memory-efficient LLM serving.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/vllm", + "cache": "cache/vllm", + "config": "configs/vllm", + "logs": "logs/vllm" + } +}, + # ── L6: AI Endpoints ─────────────────────────────────────── + + "litellm": { + "name": "LiteLLM Proxy", + "level": 6, + "layer": "AI Endpoints", + "role": "API Gateway", + "category": "Proxy", + "installer": { + "type": "uv", + "pkg": "litellm", + "env_overrides": { + "LITELLM_CONFIG_DIR": "{base_dir}/configs/litellm" + } + }, + "launcher": { + "type": "tmux", + "cmd": "litellm --port {port}", + "default_port": 4000 + }, + "deps": [], + "description": "Call 100+ LLMs using the OpenAI format.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/litellm", + "config": "configs/litellm", + "logs": "logs/litellm" + } +}, + + "9router_proxy": { + "name": "9Router Proxy", + "level": 6, + "layer": "AI Endpoints", + "role": "API Gateway", + "category": "LLM Router", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/9router", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/9router && python3 main.py --port {port}", + "default_port": 4001 + }, + "deps": [ + "ollama" + ], + "description": "Intelligent LLM request router and load balancer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "deep_eye": { + "name": "Deep Eye", + "level": 6, + "layer": "AI Endpoints", + "role": "Vision", + "category": "Computer Vision", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/deep-eye", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/deep_eye && python3 serve.py --port {port}", + "default_port": 8100 + }, + "deps": [ + "ollama" + ], + "description": "Local computer vision analysis and description engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "luxtts": { + "name": "LuxTTS", + "level": 6, + "layer": "AI Endpoints", + "role": "Voice", + "category": "Text-to-Speech", + "installer": { + "type": "uv", + "pkg": "luxtts" + }, + "launcher": { + "type": "tmux", + "cmd": "luxtts serve --port {port}", + "default_port": 8500 + }, + "deps": [], + "description": "High-quality local text-to-speech synthesis.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + # ── L7: Data & Knowledge Pipelines ───────────────────────── + + "parakeet": { + "name": "Parakeet.cpp", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Senses", + "category": "Speech Recognition", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/parakeet.cpp", + "post_install": "make" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/parakeet && ./parakeet --port {port}", + "default_port": 8300 + }, + "deps": [ + "cuda" + ], + "description": "C++ speech recognition with transformer architecture.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "chromadb": { + "name": "ChromaDB", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Vector Store", + "installer": { + "type": "uv", + "pkg": "chromadb" + }, + "launcher": { + "type": "tmux", + "cmd": "chroma run --path {models_root}/chroma --port {port}", + "default_port": 8000 + }, + "deps": [], + "description": "AI-native open-source vector database.", + "flags": {}, + "filesystem": { + "install": "tools/chromadb", + "data": "models/chroma", + "logs": "logs/chromadb" + } +}, + + "whisper": { + "name": "Whisper", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Audio Parsing", + "installer": { + "type": "pipx", + "pkg": "openai-whisper" + }, + "launcher": { + "type": "tmux", + "cmd": "whisper", + "default_port": None + }, + "deps": [], + "description": "Robust Speech Recognition via Large-Scale Weak Supervision.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + }, + "filesystem": { + "install": "tools/whisper", + "cache": "cache/whisper" + } +}, + + "docling": { + "name": "Docling", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "File Parsing", + "installer": { + "type": "pipx", + "pkg": "docling" + }, + "launcher": { + "type": "tmux", + "cmd": "docling", + "default_port": None + }, + "deps": [], + "description": "Advanced document parsing and chunking.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "lancedb": { + "name": "LanceDB", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Vector Store", + "installer": { + "type": "uv", + "pkg": "lancedb" + }, + "launcher": { + "type": "tmux", + "cmd": "python3 -m lancedb serve --port {port}", + "default_port": 8484 + }, + "deps": [], + "description": "Serverless vector database for AI applications.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "neo4j": { + "name": "Neo4j", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Graph Database", + "installer": { + "type": "pacman", + "pkg": "neo4j" + }, + "launcher": { + "type": "systemd", + "cmd": "neo4j", + "default_port": 7474 + }, + "deps": [], + "description": "Native graph database and knowledge graph engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "elasticsearch": { + "name": "Elasticsearch", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Search Engine", + "installer": { + "type": "pacman", + "pkg": "elasticsearch" + }, + "launcher": { + "type": "systemd", + "cmd": "elasticsearch", + "default_port": 9200 + }, + "deps": [], + "description": "Distributed search and analytics engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "meilisearch": { + "name": "Meilisearch", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Search Engine", + "installer": { + "type": "script", + "pkg": "meilisearch", + "cmd": "curl -L https://install.meilisearch.com | sed 's|/usr/local/bin|{tools_root}/meilisearch/bin|g' | PREFIX={tools_root}/meilisearch sh" + }, + "launcher": { + "type": "tmux", + "cmd": "meilisearch --port {port}", + "default_port": 7700 + }, + "deps": [], + "description": "Fast, relevant, and typo-tolerant search engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "graphrag": { + "name": "GraphRAG", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Knowledge Synthesis", + "category": "Graph RAG", + "installer": { + "type": "uv", + "pkg": "graphrag" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -m graphrag init", + "default_port": None + }, + "deps": [], + "description": "Microsoft GraphRAG for knowledge graph construction.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "crawl4ai": { + "name": "Crawl4AI", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Data Harvesting", + "category": "Web Crawler", + "installer": { + "type": "pipx", + "pkg": "crawl4ai" + }, + "launcher": { + "type": "desktop", + "cmd": "crawl4ai https://example.com", + "default_port": None + }, + "deps": [], + "description": "LLM-friendly web crawler and data extractor.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "markitdown": { + "name": "MarkItDown", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "File Parsing", + "category": "Document Converter", + "installer": { + "type": "pipx", + "pkg": "markitdown" + }, + "launcher": { + "type": "desktop", + "cmd": "markitdown document.pdf", + "default_port": None + }, + "deps": [], + "description": "Microsoft tool to convert files to Markdown.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "opendataloader": { + "name": "OpenDataLoader", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Ingestion", + "category": "Data Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opendataloader", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -m opendataloader --help", + "default_port": None + }, + "deps": [], + "description": "Universal data loading and preprocessing pipeline.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "turbovec": { + "name": "TurboVec", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Embedding", + "category": "Vector Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/turbovec", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/turbovec && python3 serve.py --port {port}", + "default_port": 8101 + }, + "deps": [ + "cuda" + ], + "description": "High-speed embedding generation and vector engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "airweave": { + "name": "Airweave", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Integration", + "category": "Data Sync", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/airweave", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/airweave && python3 -m airweave serve --port {port}", + "default_port": 8600 + }, + "deps": [], + "description": "Real-time data synchronization and integration layer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "qdrant": { + "name": "Qdrant", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Vector Store", + "installer": { + "type": "script", + "cmd": "curl -L https://github.com/qdrant/qdrant/releases/latest/download/qdrant-x86_64-unknown-linux-musl.tar.gz | tar xz -C {tools_root}/qdrant && chmod +x {tools_root}/qdrant/qdrant" + }, + "launcher": { + "type": "tmux", + "cmd": "./qdrant --storage-path {models_root}/qdrant --host 127.0.0.1 --port {port}", + "default_port": 6333 + }, + "deps": [], + "description": "High-performance vector database with mmap storage, payload filtering, and multi-vector support.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/qdrant", + "data": "data/qdrant", + "logs": "logs/qdrant" + } +}, + + "fabric": { + "name": "Fabric", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Curation", + "category": "Content Pipeline", + "installer": { + "type": "script", + "pkg": "fabric", + "cmd": "curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric" + }, + "launcher": { + "type": "tmux", + "cmd": "fabric", + "default_port": None + }, + "deps": [], + "description": "Open-source framework for augmenting humans using AI.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "mirofish": { + "name": "Mirofish", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Transform", + "category": "Data Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/mirofish" + }, + "launcher": { + "type": "desktop", + "cmd": "mirofish --help", + "default_port": None + }, + "deps": [], + "description": "Data transformation and ETL pipeline framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "opendataloader_pdf": { + "name": "OpenDataLoader PDF", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Extraction", + "category": "PDF Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opendataloader-pdf" + }, + "launcher": { + "type": "desktop", + "cmd": "opendataloader-pdf extract file.pdf", + "default_port": None + }, + "deps": [], + "description": "Specialized PDF extraction and data loading pipeline.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "understand_anything": { + "name": "Understand Anything", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Comprehension", + "category": "Document Understanding", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/understand-anything" + }, + "launcher": { + "type": "desktop", + "cmd": "understand-anything analyze file.pdf", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Universal document understanding and summarization.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L8: Automation & Execution ───────────────────────────── + + "langchain": { + "name": "LangChain", + "level": 8, + "layer": "Automation & Execution", + "role": "Framework", + "category": "LLM Framework", + "installer": { + "type": "uv", + "pkg": "langchain" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import langchain; print(langchain.__version__)\"", + "default_port": None + }, + "deps": [], + "description": "Framework for LLM-powered application development.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "nvidia_agent_skills": { + "name": "NVIDIA Agent Skills", + "level": 8, + "layer": "Automation & Execution", + "role": "Tool Integration", + "category": "Agent Toolkit", + "installer": { + "type": "git", + "pkg": "https://github.com/NVIDIA/agent-skills" + }, + "launcher": { + "type": "desktop", + "cmd": "ls {tools_root}/nvidia_agent_skills", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NVIDIA-curated agent skill definitions and tools.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "aider": { + "name": "Aider", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Development", + "installer": { + "type": "pipx", + "pkg": "aider-chat" + }, + "launcher": { + "type": "tmux", + "cmd": "aider --model {model_arg}", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI pair programming in your terminal.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "claude_code": { + "name": "Claude Code", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Development", + "installer": { + "type": "npm", + "pkg": "@anthropic-ai/claude-code" + }, + "launcher": { + "type": "tmux", + "cmd": "claude", + "default_port": None + }, + "deps": [], + "description": "Anthropic's terminal assistant.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "agentic_os": { + "name": "Agentic OS", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Agent OS", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/agentic-os", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/agentic_os && python3 main.py", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Autonomous agent operating system framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "loop_engineering": { + "name": "Loop Engineering", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Dev Automation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/loop-engineering" + }, + "launcher": { + "type": "desktop", + "cmd": "loop-engineering --help", + "default_port": None + }, + "deps": [], + "description": "Development loop automation and CI/CD orchestration.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "algory": { + "name": "Algory", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Algorithm Toolkit", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/algory" + }, + "launcher": { + "type": "desktop", + "cmd": "algory --help", + "default_port": None + }, + "deps": [], + "description": "Algorithm design and benchmarking toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "hivemind": { + "name": "HiveMind", + "level": 8, + "layer": "Automation & Execution", + "role": "Coordination", + "category": "Multi-Agent", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/hivemind", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/hivemind && python3 -m hivemind serve --port {port}", + "default_port": 8700 + }, + "deps": [ + "ollama" + ], + "description": "Distributed multi-agent coordination framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "honcho": { + "name": "Honcho", + "level": 8, + "layer": "Automation & Execution", + "role": "Process Manager", + "category": "Procfile Runner", + "installer": { + "type": "pipx", + "pkg": "honcho" + }, + "launcher": { + "type": "desktop", + "cmd": "honcho start", + "default_port": None + }, + "deps": [], + "description": "Python Procfile manager for multi-process apps.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "nightshift": { + "name": "NightShift", + "level": 8, + "layer": "Automation & Execution", + "role": "Scheduler", + "category": "Task Runner", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/nightshift", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/nightshift && python3 -m nightshift serve --port {port}", + "default_port": 8800 + }, + "deps": [], + "description": "Scheduled task execution and background job runner.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "atlas_os": { + "name": "Atlas OS", + "level": 8, + "layer": "Automation & Execution", + "role": "OS Integration", + "category": "AI Operating System", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/atlas-os" + }, + "launcher": { + "type": "desktop", + "cmd": "atlas --version", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI-native operating system integration layer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "eagle_eye": { + "name": "Eagle-Eye", + "level": 8, + "layer": "Automation & Execution", + "role": "Inspector", + "category": "Code Analysis", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/eagle-eye" + }, + "launcher": { + "type": "desktop", + "cmd": "eagle-eye scan .", + "default_port": None + }, + "deps": [], + "description": "Automated code inspection and quality gate.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "graphify": { + "name": "Graphify", + "level": 8, + "layer": "Automation & Execution", + "role": "Graph Builder", + "category": "Knowledge Graph", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/graphify" + }, + "launcher": { + "type": "desktop", + "cmd": "graphify build .", + "default_port": None + }, + "deps": [], + "description": "Codebase knowledge graph construction tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "promptops": { + "name": "PromptOps.it", + "level": 8, + "layer": "Automation & Execution", + "role": "Prompt Management", + "category": "Prompt Tooling", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/promptops" + }, + "launcher": { + "type": "desktop", + "cmd": "promptops --help", + "default_port": None + }, + "deps": [], + "description": "Prompt versioning, testing, and operations toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "spec_kit": { + "name": "Spec Kit", + "level": 8, + "layer": "Automation & Execution", + "role": "Documentation", + "category": "Spec Writer", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/spec-kit" + }, + "launcher": { + "type": "desktop", + "cmd": "spec-kit init", + "default_port": None + }, + "deps": [], + "description": "Automated specification and requirement document generator.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "agent_reach": { + "name": "Agent Reach", + "level": 8, + "layer": "Automation & Execution", + "role": "Discovery", + "category": "Agent Network", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/agent-reach" + }, + "launcher": { + "type": "desktop", + "cmd": "agent-reach discover", + "default_port": None + }, + "deps": [], + "description": "Multi-agent service discovery and capability mapping.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "wayland_ai": { + "name": "Wayland AI", + "level": 8, + "layer": "Automation & Execution", + "role": "Agent Orchestrator", + "category": "AI Agent", + "installer": { + "type": "git", + "pkg": "https://github.com/ferroxlabs/wayland", + "cmd": "npx @ferroxlabs/wayland-core" + }, + "launcher": { + "type": "cli", + "cmd": "wayland", + "default_port": None + }, + "deps": [], + "description": "Local-first desktop AI agent that unifies Claude Code, Codex, Gemini, Qwen, and 12+ coding assistants under a single Rust-powered orchestration engine. MCP-native, sandboxed tool execution.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "agno": { + "name": "Agno", + "level": 8, + "layer": "Automation & Execution", + "role": "Multi-Agent", + "category": "Agent Framework", + "installer": { + "type": "git", + "pkg": "https://github.com/agno-agi/agno", + "cmd": "pip install -e ." + }, + "launcher": { + "type": "cli", + "cmd": "agno", + "default_port": None + }, + "deps": [], + "description": "Python framework for building multi-agent platforms with memory, knowledge, tools, and reasoning. Production deployment via AgentOS with tracing, scheduling, and RBAC. Originally Phidata.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "hermes_agent": { + "name": "Hermes Agent", + "level": 8, + "layer": "Automation & Execution", + "role": "Agent", + "category": "AI Agent", + "installer": { + "type": "npm", + "pkg": "hermes-agent" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes agent --port {port}", + "default_port": 17051 + }, + "deps": [ + "ollama" + ], + "description": "Hermes autonomous agent runtime.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "openhands": { + "name": "OpenHands", + "level": 8, + "layer": "Automation & Execution", + "role": "Autonomous Coder", + "category": "AI Coding Agent", + "installer": { + "type": "git_node", + "pkg": "https://github.com/All-Hands-AI/OpenHands.git", + "update_cmd": "git pull --ff-only && pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openhands && python -m openhands.server --port {port}", + "default_port": 3000 + }, + "deps": [ + "ollama" + ], + "description": "Autonomous AI software engineer. Plans, writes, debugs, and executes code in sandboxed environments with full terminal access, file management, and web browsing.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/openhands", + "config": "workspaces/openhands/config", + "cache": "cache/openhands", + "logs": "logs/openhands" + } +}, + + "ponytail": { + "name": "Ponytail", + "level": 8, + "layer": "Automation & Execution", + "role": "Code Gen", + "category": "Code Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/ponytail" + }, + "launcher": { + "type": "desktop", + "cmd": "ponytail generate", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI-powered code generation and refactoring tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "headroom": { + "name": "Headroom", + "level": 8, + "layer": "Automation & Execution", + "role": "Context", + "category": "Context Manager", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/headroom" + }, + "launcher": { + "type": "desktop", + "cmd": "headroom scan", + "default_port": None + }, + "deps": [], + "description": "Codebase context extraction and management.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "skillspector": { + "name": "Skillspector", + "level": 8, + "layer": "Automation & Execution", + "role": "Analysis", + "category": "Skill Inspection", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/skillspector" + }, + "launcher": { + "type": "desktop", + "cmd": "skillspector inspect", + "default_port": None + }, + "deps": [], + "description": "Ollama skill definition inspector and validator.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "n8n": { + "name": "n8n", + "level": 8, + "layer": "Automation & Execution", + "role": "Workflow Orchestrator", + "category": "Workflow Automation", + "installer": { + "type": "npm", + "pkg": "n8n", + "env_overrides": { + "NODE_PATH": "{tools_root}/n8n/node_modules" + } + }, + "launcher": { + "type": "tmux", + "cmd": "npx n8n start --port {port} --data-dir {workspaces_root}/n8n", + "default_port": 5678 + }, + "deps": [], + "description": "Ops-oriented workflow automation for multi-step agent orchestration beyond single-turn tool calls.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/n8n", + "data": "workspaces/n8n", + "logs": "logs/n8n" + } +}, + + "synapscli": { + "name": "SynapsCLI", + "level": 8, + "layer": "Automation & Execution", + "role": "Agent Runtime", + "category": "AI Agent", + "installer": { + "type": "git", + "pkg": "https://github.com/HaseebKhalid1507/SynapsCLI", + "cmd": "cargo build --release" + }, + "launcher": { + "type": "cli", + "cmd": "synapscli", + "default_port": None + }, + "deps": [], + "description": "High-performance terminal-native AI agent runtime in Rust. Interactive LLM chat, parallel agent orchestration, and autonomous supervision.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L9: Observability ────────────────────────────────────── + + "pulse_ai": { + "name": "Pulse AI", + "level": 9, + "layer": "Observability", + "role": "Health Monitor", + "category": "AI Monitoring", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/pulse-ai", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/pulse_ai && python3 -m pulse serve --port {port}", + "default_port": 8900 + }, + "deps": [], + "description": "AI service health monitoring and auto-recovery.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "latitude": { + "name": "Latitude", + "level": 9, + "layer": "Observability", + "role": "Evaluation", + "category": "LLM Evaluation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/latitude", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/latitude && python3 -m latitude serve --port {port}", + "default_port": 9300 + }, + "deps": [ + "ollama" + ], + "description": "LLM output evaluation and benchmarking platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "glances": { + "name": "Glances", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Metrics", + "installer": { + "type": "pacman", + "pkg": "glances" + }, + "launcher": { + "type": "tmux", + "cmd": "glances -w --port {port}", + "default_port": 61208 + }, + "deps": [], + "description": "Cross-platform system monitoring tool.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + + "prometheus": { + "name": "Prometheus", + "level": 9, + "layer": "Observability", + "role": "Metrics Collector", + "category": "Metrics", + "installer": { + "type": "pacman", + "pkg": "prometheus" + }, + "launcher": { + "type": "systemd", + "cmd": "prometheus", + "default_port": 9090 + }, + "deps": [], + "description": "Open-source monitoring and alerting toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "grafana": { + "name": "Grafana", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Visualization", + "installer": { + "type": "pacman", + "pkg": "grafana" + }, + "launcher": { + "type": "systemd", + "cmd": "grafana-server", + "default_port": 3000 + }, + "deps": [], + "description": "Multi-source observability dashboards and visualization.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + + "grafana_alloy": { + "name": "Grafana Alloy", + "level": 9, + "layer": "Observability", + "role": "Collector", + "category": "Telemetry", + "installer": { + "type": "script", + "pkg": "grafana/alloy", + "cmd": "mkdir -p {tools_root}/grafana_alloy/bin && curl -fsSL -o {tools_root}/grafana_alloy/bin/alloy https://github.com/grafana/alloy/releases/latest/download/alloy-linux-amd64 && chmod +x {tools_root}/grafana_alloy/bin/alloy" + }, + "launcher": { + "type": "tmux", + "cmd": "alloy run --server.http.listen-port={port}", + "default_port": 12345 + }, + "deps": [ + "prometheus" + ], + "description": "OpenTelemetry collector with Prometheus integration.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "opik": { + "name": "Opik", + "level": 9, + "layer": "Observability", + "role": "LLM Tracing", + "category": "AI Observability", + "installer": { + "type": "uv", + "pkg": "opik" + }, + "launcher": { + "type": "tmux", + "cmd": "opik serve --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Open-source LLM observability and tracing platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "hermes_dashboard_page": { + "name": "Hermes Dashboard", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Ecosystem Dashboard", + "installer": { + "type": "npm", + "pkg": "hermes-dashboard" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes dashboard --port {port}", + "default_port": 17050 + }, + "deps": [ + "ollama" + ], + "description": "Hermes ecosystem monitoring dashboard.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + # ── L10: Intelligent Routing ─────────────────────────────── + + "odysseus": { + "name": "Odysseus", + "level": 10, + "layer": "Intelligent Routing", + "role": "Reasoning", + "category": "Reasoning Engine", + "installer": { + "type": "pip", + "pkg": "odysseus" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/odysseus/ && ./.venv/bin/uvicorn app:app --host 127.0.0.1 --port {port}", + "default_port": 7000 + }, + "deps": [ + "ollama" + ], + "description": "Local reasoning and orchestration agent.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/odysseus", + "config": "configs/odysseus", + "logs": "logs/odysseus" + } +}, + + "openai_swarm": { + "name": "OpenAI Swarm", + "level": 10, + "layer": "Intelligent Routing", + "role": "Multi-Agent", + "category": "Agent Framework", + "installer": { + "type": "uv", + "pkg": "swarm" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import swarm; print('ok')\"", + "default_port": None + }, + "deps": [], + "description": "OpenAI multi-agent orchestration framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "everos_memory": { + "name": "EverOS Memory", + "level": 10, + "layer": "Intelligent Routing", + "role": "Memory", + "category": "Persistent Memory", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/everos-memory", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/everos_memory && python3 -m everos serve --port {port}", + "default_port": 9200 + }, + "deps": [], + "description": "Persistent long-term memory system for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "glassmind": { + "name": "GlassMind", + "level": 10, + "layer": "Intelligent Routing", + "role": "Reasoning", + "category": "Reasoning Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/glassmind", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/glassmind && python3 -m glassmind serve --port {port}", + "default_port": 9400 + }, + "deps": [ + "ollama" + ], + "description": "Transparent reasoning and chain-of-thought engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "crewai": { + "name": "CrewAI", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Agent Workflow", + "installer": { + "type": "pipx", + "pkg": "crewai" + }, + "launcher": { + "type": "tmux", + "cmd": "crewai", + "default_port": None + }, + "deps": [], + "description": "Framework for orchestrating role-playing autonomous AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "autogen": { + "name": "AutoGen", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Agent Workflow", + "installer": { + "type": "pipx", + "pkg": "pyautogen" + }, + "launcher": { + "type": "tmux", + "cmd": "autogen", + "default_port": None + }, + "deps": [], + "description": "Enable next-gen LLM applications with multiple conversable agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "openbrain": { + "name": "OpenBrain", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Reasoning Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/openbrain", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openbrain && python3 -m openbrain serve --port {port}", + "default_port": 7100 + }, + "deps": [ + "ollama" + ], + "description": "Open-source reasoning and cognitive engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "mnemo_cortex": { + "name": "Mnemo Cortex", + "level": 10, + "layer": "Intelligent Routing", + "role": "Memory", + "category": "Cortex Memory", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/mnemo-cortex", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/mnemo_cortex && python3 -m mnemo_cortex serve --port {port}", + "default_port": 7200 + }, + "deps": [ + "ollama" + ], + "description": "Hierarchical cortex memory for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + # ── L11: User Interfaces ─────────────────────────────────── + + "langflow": { + "name": "LangFlow", + "level": 11, + "layer": "User Interfaces", + "role": "Visual Builder", + "category": "Workflow Builder", + "installer": { + "type": "uv", + "pkg": "langflow", + "env_overrides": { + "LANGFLOW_CONFIG_DIR": "{base_dir}/configs/langflow" + } + }, + "launcher": { + "type": "tmux", + "cmd": "langflow run --port {port}", + "default_port": 7860 + }, + "deps": [], + "description": "Visual framework for multi-agent and RAG workflows.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/langflow", + "config": "configs/langflow", + "cache": "cache/langflow", + "logs": "logs/langflow" + } +}, + + "openjarvis": { + "name": "OpenJarvis", + "level": 11, + "layer": "User Interfaces", + "role": "Central Intelligence", + "category": "AI Assistant Platform", + "installer": { + "type": "git_node", + "pkg": "https://github.com/openjarvis/openjarvis.git", + "post_install": "npm install && npm run build" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openjarvis && npm start -- --port {port}", + "default_port": 17070 + }, + "deps": [ + "ollama", + "qdrant" + ], + "description": "Central AI assistant platform with multi-modal I/O, memory integration, agentic task execution, and unified dashboard. The brain of the intelligent stack.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + }, + "filesystem": { + "install": "tools/openjarvis", + "config": "configs/openjarvis", + "data": "workspaces/openjarvis", + "cache": "cache/openjarvis", + "logs": "logs/openjarvis" + } +}, + + "hermes": { + "name": "Hermes", + "level": 11, + "layer": "User Interfaces", + "role": "Agent", + "category": "AI Agent", + "installer": { + "type": "npm", + "pkg": "hermes-ai" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes dashboard --port {port} --data-dir {workspaces_root}/hermes & hermes desktop --data-dir {workspaces_root}/hermes", + "default_port": 17050 + }, + "deps": [ + "ollama" + ], + "description": "Unified desktop and dashboard environment for the AI ecosystem.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + }, + "filesystem": { + "install": "tools/hermes", + "data": "workspaces/hermes", + "logs": "logs/hermes" + } +}, + + "librechat": { + "name": "LibreChat", + "level": 11, + "layer": "User Interfaces", + "role": "Agent Frontend", + "category": "Chat Agent Platform", + "installer": { + "type": "git_node", + "pkg": "https://github.com/danny-avila/LibreChat.git", + "update_cmd": "git pull --ff-only && yarn install && yarn build" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/librechat && API_PLUGINS=false PORT={port} NODE_ENV=production yarn backend", + "default_port": 3080 + }, + "deps": [ + "ollama" + ], + "description": "Multi-provider chat agent platform with native OpenAI tool-calling, the default agent frontend for AI-LSC's agentic orchestration.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/librechat", + "config": "configs/librechat", + "data": "data/librechat", + "logs": "logs/librechat" + } +}, + + "openwebui": { + "name": "Open WebUI", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Chat Frontend", + "installer": { + "type": "uv", + "pkg": "open-webui", + "env_overrides": { + "OPEN_WEBUI_CONFIG_DIR": "{base_dir}/configs/openwebui" + } + }, + "launcher": { + "type": "tmux", + "cmd": "open-webui serve --port {port} --data-dir {workspaces_root}/openwebui", + "default_port": 8080 + }, + "deps": [ + "ollama" + ], + "description": "Extensible frontend for LLMs.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/openwebui", + "config": "configs/openwebui", + "data": "workspaces/openwebui", + "logs": "logs/openwebui" + } +}, + + "anythingllm": { + "name": "AnythingLLM", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Chat", + "installer": { + "type": "git_node", + "pkg": "https://github.com/Mintplex-Labs/anything-llm.git", + "update_cmd": "git pull --ff-only && yarn install" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/anythingllm && yarn dev", + "default_port": 3001 + }, + "deps": [], + "description": "Full-stack application for conversational AI.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/anythingllm", + "config": "configs/anythingllm", + "data": "data/anythingllm", + "logs": "logs/anythingllm" + } +}, + + "flowise": { + "name": "Flowise", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Workflow", + "installer": { + "type": "npm", + "pkg": "flowise" + }, + "launcher": { + "type": "tmux", + "cmd": "npx flowise start --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Drag & drop UI to build customized LLM flows.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/flowise", + "data": "data/flowise", + "logs": "logs/flowise" + } +}, + + "dify": { + "name": "Dify", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Workflow", + "installer": { + "type": "git", + "pkg": "https://github.com/langgenius/dify.git" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/dify/docker && docker compose up", + "default_port": 80 + }, + "deps": [ + "postgresql", + "redis" + ], + "description": "LLM application development platform.", + "flags": { + "is_docker": True, + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/dify", + "config": "configs/dify", + "data": "data/dify", + "logs": "logs/dify" + } +}, + + "invokeai": { + "name": "InvokeAI", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Image Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/invoke-ai/InvokeAI", + "env_overrides": { + "HF_HOME": "{base_dir}/cache/huggingface", + "DIFFUSERS_CACHE": "{base_dir}/cache/huggingface" + } + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/invokeai && invokeai --host 0.0.0.0 --port {port}", + "default_port": 9090 + }, + "deps": [ + "cuda" + ], + "description": "Professional AI image generation workspace.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + }, + "filesystem": { + "install": "tools/invokeai", + "config": "configs/invokeai", + "data": "data/invokeai", + "cache": "cache/invokeai", + "logs": "logs/invokeai" + } +}, + + "forge": { + "name": "Forge (A1111)", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Image Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-forge", + "env_overrides": { + "HF_HOME": "{base_dir}/cache/huggingface", + "DIFFUSERS_CACHE": "{base_dir}/cache/huggingface" + } + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/forge && python3 launch.py --port {port}", + "default_port": 7860 + }, + "deps": [ + "cuda" + ], + "description": "Stable Diffusion WebUI Forge (optimized fork).", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/forge", + "config": "configs/forge", + "data": "data/forge", + "cache": "cache/forge", + "logs": "logs/forge" + } +}, + + "dashy": { + "name": "Dashy", + "level": 11, + "layer": "User Interfaces", + "role": "Dashboard", + "category": "Homepage", + "installer": { + "type": "npm", + "pkg": "dashy" + }, + "launcher": { + "type": "tmux", + "cmd": "dashy --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Highly customizable dashboard and homepage.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + + "local_llm_launcher": { + "name": "Local LLM Launcher", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/local-llm-launcher-gui" + }, + "launcher": { + "type": "desktop", + "cmd": "cd {tools_root}/local_llm_launcher && python3 main.py", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "GUI launcher and manager for local LLMs.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "hermes_desktop": { + "name": "Hermes Desktop", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Desktop Agent", + "installer": { + "type": "npm", + "pkg": "hermes-desktop" + }, + "launcher": { + "type": "desktop", + "cmd": "hermes desktop", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Hermes desktop agent environment.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + # ── L12: DevOps ──────────────────────────────────────────── + + "sst": { + "name": "SST (Serverless Stack)", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "Serverless Framework", + "installer": { + "type": "npm", + "pkg": "sst" + }, + "launcher": { + "type": "desktop", + "cmd": "sst --version", + "default_port": None + }, + "deps": [], + "description": "Framework for building full-stack apps on your own infrastructure.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "container_tool": { + "name": "Container Toolkit", + "level": 12, + "layer": "DevOps", + "role": "Isolation", + "category": "Sandbox", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/container" + }, + "launcher": { + "type": "desktop", + "cmd": "container --help", + "default_port": None + }, + "deps": [], + "description": "Lightweight container sandbox for code execution.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "opensandbox": { + "name": "OpenSandbox", + "level": 12, + "layer": "DevOps", + "role": "Isolation", + "category": "Sandbox", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opensandbox", + "post_install": "python3 -m venv .venv && .venv/bin/pip install -r requirements.txt 2>/dev/null || .venv/bin/pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/opensandbox && python3 serve.py --port {port}", + "default_port": 9100 + }, + "deps": [], + "description": "Secure sandboxed execution environment for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "terraform": { + "name": "Terraform", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "pacman", + "pkg": "terraform" + }, + "launcher": { + "type": "desktop", + "cmd": "terraform version", + "default_port": None + }, + "deps": [], + "description": "Infrastructure as Code provisioning tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "ansible": { + "name": "Ansible", + "level": 12, + "layer": "DevOps", + "role": "Configuration Management", + "category": "Config Management", + "installer": { + "type": "pacman", + "pkg": "ansible" + }, + "launcher": { + "type": "desktop", + "cmd": "ansible --version", + "default_port": None + }, + "deps": [], + "description": "Agentless IT automation and configuration management.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "puppet": { + "name": "Puppet", + "level": 12, + "layer": "DevOps", + "role": "Configuration Management", + "category": "Config Management", + "installer": { + "type": "pacman", + "pkg": "puppet" + }, + "launcher": { + "type": "desktop", + "cmd": "puppet --version", + "default_port": None + }, + "deps": [], + "description": "Declarative configuration management tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "stack_exporter": { + "name": "Stack Container Packager", + "level": 12, + "layer": "DevOps", + "role": "Runtime Packaging", + "category": "OCI Export", + "installer": { + "type": "pacman", + "pkg": "podman" + }, + "launcher": { + "type": "desktop", + "cmd": "podman --version", + "default_port": None + }, + "deps": [], + "description": "Compiles validated pipeline matrices into Podman/Docker specs.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "pulumi": { + "name": "Pulumi", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "@pulumi/pulumi" + }, + "launcher": { + "type": "desktop", + "cmd": "pulumi version", + "default_port": None + }, + "deps": [], + "description": "IaC platform using real programming languages (Python, TypeScript, Go).", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "bicep": { + "name": "Bicep", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "@azure/bicep" + }, + "launcher": { + "type": "desktop", + "cmd": "bicep --version", + "default_port": None + }, + "deps": [], + "description": "Azure domain-specific language for declarative infrastructure.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "opentofu": { + "name": "OpenTofu", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "custom", + "pkg": "https://opentofu.org/docs/intro/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "tofu version", + "default_port": None + }, + "deps": [], + "description": "Open-source Terraform fork maintained by the Linux Foundation.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "aws_cdk": { + "name": "AWS CDK", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "aws-cdk" + }, + "launcher": { + "type": "desktop", + "cmd": "cdk --version", + "default_port": None + }, + "deps": [], + "description": "Cloud Development Kit — define AWS CloudFormation in code.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "crossplane": { + "name": "Crossplane", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC Control Plane", + "installer": { + "type": "custom", + "pkg": "https://docs.crossplane.io/v2/getting-started/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "crossplane --help", + "default_port": None + }, + "deps": [ + "kubectl" + ], + "description": "Kubernetes-native cloud infrastructure control plane.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + + "terragrunt": { + "name": "Terragrunt", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC Wrapper", + "installer": { + "type": "custom", + "pkg": "https://terragrunt.gruntwork.io/docs/getting-started/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "terragrunt --version", + "default_port": None + }, + "deps": [ + "terraform" + ], + "description": "Thin wrapper for Terraform providing DRY config and remote state.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "homelab": { + "name": "Homelab", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "Provisioning", + "installer": { + "type": "git", + "pkg": "https://github.com/khuedoan/homelab", + "cmd": "" + }, + "launcher": { + "type": "cli", + "cmd": "ansible-playbook site.yml", + "default_port": None + }, + "deps": [ + "ansible" + ], + "description": "Fully automated homelab provisioning from empty disk to running services in one command. IaC/GitOps: Packer + Terraform + Ansible + k3s + ArgoCD.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + # ── L13: Knowledge Management ────────────────────────────── + + "kanban": { + "name": "Kanban Board", + "level": 13, + "layer": "Knowledge Management", + "role": "Planning", + "category": "Project Management", + "installer": { + "type": "npm", + "pkg": "kanban-board" + }, + "launcher": { + "type": "desktop", + "cmd": "kanban", + "default_port": None + }, + "deps": [], + "description": "Local kanban board for task and sprint management.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "career_ops": { + "name": "Career Ops", + "level": 13, + "layer": "Knowledge Management", + "role": "Assessment", + "category": "Skill Analysis", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/career-ops" + }, + "launcher": { + "type": "desktop", + "cmd": "career-ops analyze", + "default_port": None + }, + "deps": [], + "description": "Career skill assessment and gap analysis tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "pm_skills": { + "name": "PM Skills", + "level": 13, + "layer": "Knowledge Management", + "role": "Management", + "category": "Project Management", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/pm-skills" + }, + "launcher": { + "type": "desktop", + "cmd": "pm-skills plan", + "default_port": None + }, + "deps": [], + "description": "AI-assisted project management and planning skills.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + + "mnemosyne": { + "name": "Mnemosyne", + "level": 13, + "layer": "Knowledge Management", + "role": "Learning", + "category": "Spaced Repetition", + "installer": { + "type": "pipx", + "pkg": "mnemosyne" + }, + "launcher": { + "type": "desktop", + "cmd": "mnemosyne", + "default_port": None + }, + "deps": [], + "description": "Spaced repetition flashcard program with AI integration.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "obsidian": { + "name": "Obsidian", + "level": 13, + "layer": "Knowledge Management", + "role": "Knowledge Graph", + "category": "Notes", + "installer": { + "type": "pacman", + "pkg": "obsidian" + }, + "launcher": { + "type": "desktop", + "cmd": "obsidian", + "default_port": None + }, + "deps": [], + "description": "Knowledge graph note-taking and markdown editor.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "zotero": { + "name": "Zotero", + "level": 13, + "layer": "Knowledge Management", + "role": "Reference Manager", + "category": "Academic References", + "installer": { + "type": "pacman", + "pkg": "zotero" + }, + "launcher": { + "type": "desktop", + "cmd": "zotero", + "default_port": None + }, + "deps": [], + "description": "Free reference management for researchers.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "calibre": { + "name": "Calibre", + "level": 13, + "layer": "Knowledge Management", + "role": "Library Manager", + "category": "Ebook Library", + "installer": { + "type": "pacman", + "pkg": "calibre" + }, + "launcher": { + "type": "desktop", + "cmd": "calibre", + "default_port": None + }, + "deps": [], + "description": "E-book library management and converter.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +}, + + "paperlessngx": { + "name": "Paperless-ngx", + "level": 13, + "layer": "Knowledge Management", + "role": "Document Archive", + "category": "Document Management", + "installer": { + "type": "git", + "pkg": "https://github.com/paperless-ngx/paperless-ngx", + "env_overrides": { + "PAPERLESS_DATA_DIR": "{base_dir}/data/paperlessngx" + } + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/paperlessngx && python3 manage.py runserver 0.0.0.0:{port}", + "default_port": 8000 + }, + "deps": [ + "postgresql", + "redis" + ], + "description": "Document management system with OCR.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/paperlessngx", + "config": "configs/paperlessngx", + "data": "data/paperlessngx", + "logs": "logs/paperlessngx" + } +}, + + "logseq": { + "name": "Logseq", + "level": 13, + "layer": "Knowledge Management", + "role": "Knowledge Graph", + "category": "Outliner", + "installer": { + "type": "npm", + "pkg": "logseq" + }, + "launcher": { + "type": "desktop", + "cmd": "logseq", + "default_port": None + }, + "deps": [], + "description": "Privacy-first knowledge graph outliner.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + + "joplin": { + "name": "Joplin", + "level": 13, + "layer": "Knowledge Management", + "role": "Note Taking", + "category": "Notes", + "installer": { + "type": "pacman", + "pkg": "joplin" + }, + "launcher": { + "type": "desktop", + "cmd": "joplin", + "default_port": None + }, + "deps": [], + "description": "Open-source note taking and to-do application.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +} +} diff --git a/src/ai_lsc/registry/layers/__init__.py b/src/ai_lsc/registry/layers/__init__.py new file mode 100644 index 0000000..8efceda --- /dev/null +++ b/src/ai_lsc/registry/layers/__init__.py @@ -0,0 +1,6 @@ +"""Registry layers sub-package. + +Each module in this directory exports a ``TOOLS`` list of registry +entries belonging to one 13-Layer stratum. The loader in +:mod:`ai_lsc.registry.loader` discovers and merges them automatically. +""" diff --git a/src/ai_lsc/registry/layers/automation.py b/src/ai_lsc/registry/layers/automation.py new file mode 100644 index 0000000..35d5cd3 --- /dev/null +++ b/src/ai_lsc/registry/layers/automation.py @@ -0,0 +1,785 @@ +"""Registry entries for the Automation & Execution layer (L8). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'aider': { + "name": "Aider", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Development", + "installer": { + "type": "uv", + "pkg": "aider-chat" + }, + "launcher": { + "type": "tmux", + "cmd": "aider --model {model_arg}", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI pair programming in your terminal.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'claude_code': { + "name": "Claude Code", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Development", + "installer": { + "type": "npm", + "pkg": "@anthropic-ai/claude-code" + }, + "launcher": { + "type": "tmux", + "cmd": "claude", + "default_port": None + }, + "deps": [], + "description": "Anthropic's terminal assistant.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'fabric': { + "name": "Fabric", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Curation", + "installer": { + "type": "script", + "cmd": "curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > {tools_root}/bin/fabric && chmod +x {tools_root}/bin/fabric" + }, + "launcher": { + "type": "tmux", + "cmd": "fabric", + "default_port": None + }, + "deps": [], + "description": "Open-source framework for augmenting humans using AI.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'agentic_os': { + "name": "Agentic OS", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Agent OS", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/agentic-os" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/agentic_os && python3 main.py", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Autonomous agent operating system framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'loop_engineering': { + "name": "Loop Engineering", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Dev Automation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/loop-engineering" + }, + "launcher": { + "type": "desktop", + "cmd": "loop-engineering --help", + "default_port": None + }, + "deps": [], + "description": "Development loop automation and CI/CD orchestration.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'algory': { + "name": "Algory", + "level": 8, + "layer": "Automation & Execution", + "role": "Hands", + "category": "Algorithm Toolkit", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/algory" + }, + "launcher": { + "type": "desktop", + "cmd": "algory --help", + "default_port": None + }, + "deps": [], + "description": "Algorithm design and benchmarking toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'hivemind': { + "name": "HiveMind", + "level": 8, + "layer": "Automation & Execution", + "role": "Coordination", + "category": "Multi-Agent", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/hivemind" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/hivemind && python3 -m hivemind serve --port {port}", + "default_port": 8700 + }, + "deps": [ + "ollama" + ], + "description": "Distributed multi-agent coordination framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'honcho': { + "name": "Honcho", + "level": 8, + "layer": "Automation & Execution", + "role": "Process Manager", + "category": "Procfile Runner", + "installer": { + "type": "uv", + "pkg": "honcho" + }, + "launcher": { + "type": "desktop", + "cmd": "honcho start", + "default_port": None + }, + "deps": [], + "description": "Python Procfile manager for multi-process apps.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'container_tool': { + "name": "Container Toolkit", + "level": 8, + "layer": "Automation & Execution", + "role": "Isolation", + "category": "Sandbox", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/container" + }, + "launcher": { + "type": "desktop", + "cmd": "container --help", + "default_port": None + }, + "deps": [], + "description": "Lightweight container sandbox for code execution.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'nightshift': { + "name": "NightShift", + "level": 8, + "layer": "Automation & Execution", + "role": "Scheduler", + "category": "Task Runner", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/nightshift" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/nightshift && python3 -m nightshift serve --port {port}", + "default_port": 8800 + }, + "deps": [], + "description": "Scheduled task execution and background job runner.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'atlas_os': { + "name": "Atlas OS", + "level": 8, + "layer": "Automation & Execution", + "role": "OS Integration", + "category": "AI Operating System", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/atlas-os" + }, + "launcher": { + "type": "desktop", + "cmd": "atlas --version", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI-native operating system integration layer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'pulse_ai': { + "name": "Pulse AI", + "level": 8, + "layer": "Automation & Execution", + "role": "Health Monitor", + "category": "AI Monitoring", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/pulse-ai" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/pulse_ai && python3 -m pulse serve --port {port}", + "default_port": 8900 + }, + "deps": [], + "description": "AI service health monitoring and auto-recovery.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'eagle_eye': { + "name": "Eagle-Eye", + "level": 8, + "layer": "Automation & Execution", + "role": "Inspector", + "category": "Code Analysis", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/eagle-eye" + }, + "launcher": { + "type": "desktop", + "cmd": "eagle-eye scan .", + "default_port": None + }, + "deps": [], + "description": "Automated code inspection and quality gate.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'graphify': { + "name": "Graphify", + "level": 8, + "layer": "Automation & Execution", + "role": "Graph Builder", + "category": "Knowledge Graph", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/graphify" + }, + "launcher": { + "type": "desktop", + "cmd": "graphify build .", + "default_port": None + }, + "deps": [], + "description": "Codebase knowledge graph construction tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'mirofish': { + "name": "Mirofish", + "level": 8, + "layer": "Automation & Execution", + "role": "Transform", + "category": "Data Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/mirofish" + }, + "launcher": { + "type": "desktop", + "cmd": "mirofish --help", + "default_port": None + }, + "deps": [], + "description": "Data transformation and ETL pipeline framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'promptops': { + "name": "PromptOps.it", + "level": 8, + "layer": "Automation & Execution", + "role": "Prompt Management", + "category": "Prompt Tooling", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/promptops" + }, + "launcher": { + "type": "desktop", + "cmd": "promptops --help", + "default_port": None + }, + "deps": [], + "description": "Prompt versioning, testing, and operations toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'opensandbox': { + "name": "OpenSandbox", + "level": 8, + "layer": "Automation & Execution", + "role": "Isolation", + "category": "Sandbox", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opensandbox" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/opensandbox && python3 serve.py --port {port}", + "default_port": 9100 + }, + "deps": [], + "description": "Secure sandboxed execution environment for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'kanban': { + "name": "Kanban Board", + "level": 8, + "layer": "Automation & Execution", + "role": "Planning", + "category": "Project Management", + "installer": { + "type": "npm", + "pkg": "kanban-board" + }, + "launcher": { + "type": "desktop", + "cmd": "kanban", + "default_port": None + }, + "deps": [], + "description": "Local kanban board for task and sprint management.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'spec_kit': { + "name": "Spec Kit", + "level": 8, + "layer": "Automation & Execution", + "role": "Documentation", + "category": "Spec Writer", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/spec-kit" + }, + "launcher": { + "type": "desktop", + "cmd": "spec-kit init", + "default_port": None + }, + "deps": [], + "description": "Automated specification and requirement document generator.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'agent_reach': { + "name": "Agent Reach", + "level": 8, + "layer": "Automation & Execution", + "role": "Discovery", + "category": "Agent Network", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/agent-reach" + }, + "launcher": { + "type": "desktop", + "cmd": "agent-reach discover", + "default_port": None + }, + "deps": [], + "description": "Multi-agent service discovery and capability mapping.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'career_ops': { + "name": "Career Ops", + "level": 8, + "layer": "Automation & Execution", + "role": "Assessment", + "category": "Skill Analysis", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/career-ops" + }, + "launcher": { + "type": "desktop", + "cmd": "career-ops analyze", + "default_port": None + }, + "deps": [], + "description": "Career skill assessment and gap analysis tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'pm_skills': { + "name": "PM Skills", + "level": 8, + "layer": "Automation & Execution", + "role": "Management", + "category": "Project Management", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/pm-skills" + }, + "launcher": { + "type": "desktop", + "cmd": "pm-skills plan", + "default_port": None + }, + "deps": [], + "description": "AI-assisted project management and planning skills.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'everos_memory': { + "name": "EverOS Memory", + "level": 8, + "layer": "Automation & Execution", + "role": "Memory", + "category": "Persistent Memory", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/everos-memory" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/everos_memory && python3 -m everos serve --port {port}", + "default_port": 9200 + }, + "deps": [], + "description": "Persistent long-term memory system for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'hermes_agent': { + "name": "Hermes Agent", + "level": 8, + "layer": "Automation & Execution", + "role": "Agent", + "category": "AI Agent", + "installer": { + "type": "npm", + "pkg": "hermes-agent" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes agent --port {port}", + "default_port": 17051 + }, + "deps": [ + "ollama" + ], + "description": "Hermes autonomous agent runtime.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'openhands': { + "name": "OpenHands", + "level": 8, + "layer": "Automation & Execution", + "role": "Autonomous Coder", + "category": "AI Coding Agent", + "installer": { + "type": "git_node", + "pkg": "https://github.com/All-Hands-AI/OpenHands.git", + "update_cmd": "git pull --ff-only && pip install -e ." + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openhands && python -m openhands.server --port {port}", + "default_port": 3000 + }, + "deps": [ + "ollama" + ], + "description": "Autonomous AI software engineer. Plans, writes, debugs, and executes code in sandboxed environments with full terminal access, file management, and web browsing.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + }, + "filesystem": { + "install": "tools/openhands", + "config": "workspaces/openhands/config", + "cache": "cache/openhands", + "logs": "logs/openhands" + } +}, + 'ponytail': { + "name": "Ponytail", + "level": 8, + "layer": "Automation & Execution", + "role": "Code Gen", + "category": "Code Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/ponytail" + }, + "launcher": { + "type": "desktop", + "cmd": "ponytail generate", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "AI-powered code generation and refactoring tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'headroom': { + "name": "Headroom", + "level": 8, + "layer": "Automation & Execution", + "role": "Context", + "category": "Context Manager", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/headroom" + }, + "launcher": { + "type": "desktop", + "cmd": "headroom scan", + "default_port": None + }, + "deps": [], + "description": "Codebase context extraction and management.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'latitude': { + "name": "Latitude", + "level": 8, + "layer": "Automation & Execution", + "role": "Evaluation", + "category": "LLM Evaluation", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/latitude" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/latitude && python3 -m latitude serve --port {port}", + "default_port": 9300 + }, + "deps": [ + "ollama" + ], + "description": "LLM output evaluation and benchmarking platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'skillspector': { + "name": "Skillspector", + "level": 8, + "layer": "Automation & Execution", + "role": "Analysis", + "category": "Skill Inspection", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/skillspector" + }, + "launcher": { + "type": "desktop", + "cmd": "skillspector inspect", + "default_port": None + }, + "deps": [], + "description": "Ollama skill definition inspector and validator.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'glassmind': { + "name": "GlassMind", + "level": 8, + "layer": "Automation & Execution", + "role": "Reasoning", + "category": "Reasoning Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/glassmind" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/glassmind && python3 -m glassmind serve --port {port}", + "default_port": 9400 + }, + "deps": [ + "ollama" + ], + "description": "Transparent reasoning and chain-of-thought engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'opendataloader_pdf': { + "name": "OpenDataLoader PDF", + "level": 8, + "layer": "Automation & Execution", + "role": "Extraction", + "category": "PDF Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opendataloader-pdf" + }, + "launcher": { + "type": "desktop", + "cmd": "opendataloader-pdf extract file.pdf", + "default_port": None + }, + "deps": [], + "description": "Specialized PDF extraction and data loading pipeline.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'understand_anything': { + "name": "Understand Anything", + "level": 8, + "layer": "Automation & Execution", + "role": "Comprehension", + "category": "Document Understanding", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/understand-anything" + }, + "launcher": { + "type": "desktop", + "cmd": "understand-anything analyze file.pdf", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Universal document understanding and summarization.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/containers.py b/src/ai_lsc/registry/layers/containers.py new file mode 100644 index 0000000..1e9cdcb --- /dev/null +++ b/src/ai_lsc/registry/layers/containers.py @@ -0,0 +1,256 @@ +"""Registry entries for the DevOps layer (L12). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'terraform': { + "name": "Terraform", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "pacman", + "pkg": "terraform" + }, + "launcher": { + "type": "desktop", + "cmd": "terraform version", + "default_port": None + }, + "deps": [], + "description": "Infrastructure as Code provisioning tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'ansible': { + "name": "Ansible", + "level": 12, + "layer": "DevOps", + "role": "Configuration Management", + "category": "Config Management", + "installer": { + "type": "pacman", + "pkg": "ansible" + }, + "launcher": { + "type": "desktop", + "cmd": "ansible --version", + "default_port": None + }, + "deps": [], + "description": "Agentless IT automation and configuration management.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'puppet': { + "name": "Puppet", + "level": 12, + "layer": "DevOps", + "role": "Configuration Management", + "category": "Config Management", + "installer": { + "type": "pacman", + "pkg": "puppet" + }, + "launcher": { + "type": "desktop", + "cmd": "puppet --version", + "default_port": None + }, + "deps": [], + "description": "Declarative configuration management tool.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'stack_exporter': { + "name": "Stack Container Packager", + "level": 12, + "layer": "DevOps", + "role": "Runtime Packaging", + "category": "OCI Export", + "installer": { + "type": "pacman", + "pkg": "podman" + }, + "launcher": { + "type": "desktop", + "cmd": "podman --version", + "default_port": None + }, + "deps": [], + "description": "Compiles validated pipeline matrices into Podman/Docker specs.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'pulumi': { + "name": "Pulumi", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "@pulumi/pulumi" + }, + "launcher": { + "type": "desktop", + "cmd": "pulumi version", + "default_port": None + }, + "deps": [], + "description": "IaC platform using real programming languages (Python, TypeScript, Go).", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'bicep': { + "name": "Bicep", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "@azure/bicep" + }, + "launcher": { + "type": "desktop", + "cmd": "bicep --version", + "default_port": None + }, + "deps": [], + "description": "Azure domain-specific language for declarative infrastructure.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'opentofu': { + "name": "OpenTofu", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "custom", + "pkg": "https://opentofu.org/docs/intro/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "tofu version", + "default_port": None + }, + "deps": [], + "description": "Open-source Terraform fork maintained by the Linux Foundation.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'aws_cdk': { + "name": "AWS CDK", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC", + "installer": { + "type": "npm", + "pkg": "aws-cdk" + }, + "launcher": { + "type": "desktop", + "cmd": "cdk --version", + "default_port": None + }, + "deps": [], + "description": "Cloud Development Kit — define AWS CloudFormation in code.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'crossplane': { + "name": "Crossplane", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC Control Plane", + "installer": { + "type": "custom", + "pkg": "https://docs.crossplane.io/v2/getting-started/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "crossplane --help", + "default_port": None + }, + "deps": [ + "kubectl" + ], + "description": "Kubernetes-native cloud infrastructure control plane.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'terragrunt': { + "name": "Terragrunt", + "level": 12, + "layer": "DevOps", + "role": "Infrastructure as Code", + "category": "IaC Wrapper", + "installer": { + "type": "custom", + "pkg": "https://terragrunt.gruntwork.io/docs/getting-started/install/" + }, + "launcher": { + "type": "desktop", + "cmd": "terragrunt --version", + "default_port": None + }, + "deps": [ + "terraform" + ], + "description": "Thin wrapper for Terraform providing DRY config and remote state.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/data_knowledge.py b/src/ai_lsc/registry/layers/data_knowledge.py new file mode 100644 index 0000000..8bd501e --- /dev/null +++ b/src/ai_lsc/registry/layers/data_knowledge.py @@ -0,0 +1,319 @@ +"""Registry entries for the Data & Knowledge Pipelines layer (L7). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'chromadb': { + "name": "ChromaDB", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Vector Store", + "installer": { + "type": "uv", + "pkg": "chromadb" + }, + "launcher": { + "type": "tmux", + "cmd": "chroma run --path {models_root}/chroma --port {port}", + "default_port": 8000 + }, + "deps": [], + "description": "AI-native open-source vector database.", + "flags": {} +}, + 'whisper': { + "name": "Whisper", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Audio Parsing", + "installer": { + "type": "uv", + "pkg": "openai-whisper" + }, + "launcher": { + "type": "tmux", + "cmd": "whisper", + "default_port": None + }, + "deps": [], + "description": "Robust Speech Recognition via Large-Scale Weak Supervision.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'docling': { + "name": "Docling", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "File Parsing", + "installer": { + "type": "uv", + "pkg": "docling" + }, + "launcher": { + "type": "tmux", + "cmd": "docling", + "default_port": None + }, + "deps": [], + "description": "Advanced document parsing and chunking.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'lancedb': { + "name": "LanceDB", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Vector Store", + "installer": { + "type": "uv", + "pkg": "lancedb" + }, + "launcher": { + "type": "tmux", + "cmd": "python3 -m lancedb serve --port {port}", + "default_port": 8484 + }, + "deps": [], + "description": "Serverless vector database for AI applications.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'neo4j': { + "name": "Neo4j", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Graph Database", + "installer": { + "type": "pacman", + "pkg": "neo4j" + }, + "launcher": { + "type": "systemd", + "cmd": "neo4j", + "default_port": 7474 + }, + "deps": [], + "description": "Native graph database and knowledge graph engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'elasticsearch': { + "name": "Elasticsearch", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Search Engine", + "installer": { + "type": "pacman", + "pkg": "elasticsearch" + }, + "launcher": { + "type": "systemd", + "cmd": "elasticsearch", + "default_port": 9200 + }, + "deps": [], + "description": "Distributed search and analytics engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'meilisearch': { + "name": "Meilisearch", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Memory / Senses", + "category": "Search Engine", + "installer": { + "type": "script", + "cmd": "curl -L https://install.meilisearch.com | sh" + }, + "launcher": { + "type": "tmux", + "cmd": "meilisearch --port {port}", + "default_port": 7700 + }, + "deps": [], + "description": "Fast, relevant, and typo-tolerant search engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'graphrag': { + "name": "GraphRAG", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Knowledge Synthesis", + "category": "Graph RAG", + "installer": { + "type": "uv", + "pkg": "graphrag" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -m graphrag init", + "default_port": None + }, + "deps": [], + "description": "Microsoft GraphRAG for knowledge graph construction.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'crawl4ai': { + "name": "Crawl4AI", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Data Harvesting", + "category": "Web Crawler", + "installer": { + "type": "uv", + "pkg": "crawl4ai" + }, + "launcher": { + "type": "desktop", + "cmd": "crawl4ai https://example.com", + "default_port": None + }, + "deps": [], + "description": "LLM-friendly web crawler and data extractor.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'markitdown': { + "name": "MarkItDown", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "File Parsing", + "category": "Document Converter", + "installer": { + "type": "uv", + "pkg": "markitdown" + }, + "launcher": { + "type": "desktop", + "cmd": "markitdown document.pdf", + "default_port": None + }, + "deps": [], + "description": "Microsoft tool to convert files to Markdown.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'opendataloader': { + "name": "OpenDataLoader", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Ingestion", + "category": "Data Pipeline", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/opendataloader" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -m opendataloader --help", + "default_port": None + }, + "deps": [], + "description": "Universal data loading and preprocessing pipeline.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'turbovec': { + "name": "TurboVec", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Embedding", + "category": "Vector Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/turbovec" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/turbovec && python3 serve.py --port {port}", + "default_port": 8101 + }, + "deps": [ + "cuda" + ], + "description": "High-speed embedding generation and vector engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'airweave': { + "name": "Airweave", + "level": 7, + "layer": "Data & Knowledge Pipelines", + "role": "Integration", + "category": "Data Sync", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/airweave" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/airweave && python3 -m airweave serve --port {port}", + "default_port": 8600 + }, + "deps": [], + "description": "Real-time data synchronization and integration layer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, +} diff --git a/src/ai_lsc/registry/layers/development.py b/src/ai_lsc/registry/layers/development.py new file mode 100644 index 0000000..357295d --- /dev/null +++ b/src/ai_lsc/registry/layers/development.py @@ -0,0 +1,118 @@ +"""Registry entries for the Development Environment layer (L2). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'python': { + "name": "Python Environment", + "level": 2, + "layer": "Development Environment", + "role": "Build System", + "category": "Runtime", + "installer": { + "type": "pacman", + "pkg": "python-pip" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 --version", + "default_port": None + }, + "deps": [], + "description": "Python core interpreter and virtual environments.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'cupy': { + "name": "CuPy", + "level": 2, + "layer": "Development Environment", + "role": "GPU Acceleration", + "category": "GPU Computing", + "installer": { + "type": "uv", + "pkg": "cupy-cuda12x" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import cupy; print(cupy.__version__)\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NumPy-compatible GPU array computing library.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'unsloth': { + "name": "Unsloth", + "level": 2, + "layer": "Development Environment", + "role": "Training", + "category": "Model Training", + "installer": { + "type": "uv", + "pkg": "unsloth" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import unsloth; print('ok')\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "2x faster LLM fine-tuning with 80% less memory.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'sst': { + "name": "SST (Serverless Stack)", + "level": 2, + "layer": "Development Environment", + "role": "Full-Stack Framework", + "category": "Serverless Framework", + "installer": { + "type": "npm", + "pkg": "sst" + }, + "launcher": { + "type": "desktop", + "cmd": "sst --version", + "default_port": None + }, + "deps": [], + "description": "Framework for building full-stack apps on your own infrastructure (AWS, Cloudflare, etc).", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/distributed.py b/src/ai_lsc/registry/layers/distributed.py new file mode 100644 index 0000000..fe47fd8 --- /dev/null +++ b/src/ai_lsc/registry/layers/distributed.py @@ -0,0 +1,141 @@ +"""Registry entries for the Distributed Runtime layer (L5). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'vllm': { + "name": "vLLM", + "level": 5, + "layer": "Distributed Runtime", + "role": "Scaling", + "category": "LLM Serving", + "installer": { + "type": "uv", + "pkg": "vllm" + }, + "launcher": { + "type": "tmux", + "cmd": "python -m vllm.entrypoints.openai.api_server --port {port}", + "default_port": 8000 + }, + "deps": [ + "cuda" + ], + "description": "High-throughput and memory-efficient LLM serving.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'distcc': { + "name": "DistCC", + "level": 5, + "layer": "Distributed Runtime", + "role": "Distribution", + "category": "Distributed Compilation", + "installer": { + "type": "pacman", + "pkg": "distcc" + }, + "launcher": { + "type": "desktop", + "cmd": "distcc --version", + "default_port": 3632 + }, + "deps": [], + "description": "Distributed C/C++ compilation across multiple machines.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'dma': { + "name": "DMA (Distcc Monitor Agent)", + "level": 5, + "layer": "Distributed Runtime", + "role": "Monitoring", + "category": "Build Monitoring", + "installer": { + "type": "git", + "pkg": "https://github.com/distcc/dma" + }, + "launcher": { + "type": "desktop", + "cmd": "dma --version", + "default_port": None + }, + "deps": [ + "distcc" + ], + "description": "Monitor for distributed compilation with distcc.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'ray': { + "name": "Ray", + "level": 5, + "layer": "Distributed Runtime", + "role": "Scaling", + "category": "Distributed Compute", + "installer": { + "type": "uv", + "pkg": "ray" + }, + "launcher": { + "type": "tmux", + "cmd": "ray start --head --port {port}", + "default_port": 8265 + }, + "deps": [], + "description": "Unified framework for scaling AI and Python applications.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'pssh': { + "name": "PSSH (Parallel SSH)", + "level": 5, + "layer": "Distributed Runtime", + "role": "Coordination", + "category": "Cluster SSH", + "installer": { + "type": "pacman", + "pkg": "pssh" + }, + "launcher": { + "type": "desktop", + "cmd": "pssh --version", + "default_port": None + }, + "deps": [], + "description": "Parallel SSH tool for running commands on multiple hosts.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/endpoints.py b/src/ai_lsc/registry/layers/endpoints.py new file mode 100644 index 0000000..57ece73 --- /dev/null +++ b/src/ai_lsc/registry/layers/endpoints.py @@ -0,0 +1,285 @@ +"""Registry entries for the AI Endpoints layer (L6). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'litellm': { + "name": "LiteLLM Proxy", + "level": 6, + "layer": "AI Endpoints", + "role": "API Gateway", + "category": "Proxy", + "installer": { + "type": "uv", + "pkg": "litellm" + }, + "launcher": { + "type": "tmux", + "cmd": "litellm --port {port}", + "default_port": 4000 + }, + "deps": [], + "description": "Call 100+ LLMs using the OpenAI format.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'odysseus': { + "name": "Odysseus", + "level": 6, + "layer": "AI Endpoints", + "role": "Reasoning", + "category": "Agent Workflow", + "installer": { + "type": "uv", + "pkg": "odysseus" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/odysseus/ && ./.venv/bin/uvicorn app:app --host 127.0.0.1 --port {port}", + "default_port": 7000 + }, + "deps": [ + "ollama" + ], + "description": "Local reasoning and orchestration agent.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + '9router_proxy': { + "name": "9Router Proxy", + "level": 6, + "layer": "AI Endpoints", + "role": "API Gateway", + "category": "LLM Router", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/9router" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/9router && python3 main.py --port {port}", + "default_port": 4001 + }, + "deps": [ + "ollama" + ], + "description": "Intelligent LLM request router and load balancer.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'langchain': { + "name": "LangChain", + "level": 6, + "layer": "AI Endpoints", + "role": "Orchestration", + "category": "LLM Framework", + "installer": { + "type": "uv", + "pkg": "langchain" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import langchain; print(langchain.__version__)\"", + "default_port": None + }, + "deps": [], + "description": "Framework for LLM-powered application development.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'langflow': { + "name": "LangFlow", + "level": 6, + "layer": "AI Endpoints", + "role": "Visual Builder", + "category": "Workflow", + "installer": { + "type": "uv", + "pkg": "langflow" + }, + "launcher": { + "type": "tmux", + "cmd": "langflow run --port {port}", + "default_port": 7860 + }, + "deps": [], + "description": "Visual framework for multi-agent and RAG workflows.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'openai_swarm': { + "name": "OpenAI Swarm", + "level": 6, + "layer": "AI Endpoints", + "role": "Multi-Agent", + "category": "Agent Framework", + "installer": { + "type": "uv", + "pkg": "swarm" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import swarm; print('ok')\"", + "default_port": None + }, + "deps": [], + "description": "OpenAI multi-agent orchestration framework.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'nvidia_agent_skills': { + "name": "NVIDIA Agent Skills", + "level": 6, + "layer": "AI Endpoints", + "role": "Tool Integration", + "category": "Agent Toolkit", + "installer": { + "type": "git", + "pkg": "https://github.com/NVIDIA/agent-skills" + }, + "launcher": { + "type": "desktop", + "cmd": "ls {tools_root}/nvidia_agent_skills", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NVIDIA-curated agent skill definitions and tools.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'deep_eye': { + "name": "Deep Eye", + "level": 6, + "layer": "AI Endpoints", + "role": "Vision", + "category": "Computer Vision", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/deep-eye" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/deep_eye && python3 serve.py --port {port}", + "default_port": 8100 + }, + "deps": [ + "ollama" + ], + "description": "Local computer vision analysis and description engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'parakeet': { + "name": "Parakeet.cpp", + "level": 6, + "layer": "AI Endpoints", + "role": "Senses", + "category": "Speech Recognition", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/parakeet.cpp" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/parakeet && ./parakeet --port {port}", + "default_port": 8300 + }, + "deps": [ + "cuda" + ], + "description": "C++ speech recognition with transformer architecture.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'luxtts': { + "name": "LuxTTS", + "level": 6, + "layer": "AI Endpoints", + "role": "Voice", + "category": "Text-to-Speech", + "installer": { + "type": "uv", + "pkg": "luxtts" + }, + "launcher": { + "type": "tmux", + "cmd": "luxtts serve --port {port}", + "default_port": 8500 + }, + "deps": [], + "description": "High-quality local text-to-speech synthesis.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'agno': { + "name": "Agno", + "level": 6, + "layer": "AI Endpoints", + "role": "Agent Framework", + "category": "AI Agent", + "installer": { + "type": "uv", + "pkg": "agno" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import agno; print(agno.__version__)\"", + "default_port": None + }, + "deps": [], + "description": "Framework for building AI agents with tool calling and memory.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/gpu.py b/src/ai_lsc/registry/layers/gpu.py new file mode 100644 index 0000000..eb2e570 --- /dev/null +++ b/src/ai_lsc/registry/layers/gpu.py @@ -0,0 +1,70 @@ +"""Registry entries for the GPU Runtime layer (L3). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'cuda': { + "name": "CUDA Toolkit", + "level": 3, + "layer": "GPU Runtime", + "role": "Acceleration", + "category": "GPU", + "installer": { + "type": "pacman", + "pkg": "cuda" + }, + "launcher": { + "type": "desktop", + "cmd": "nvcc --version", + "default_port": None + }, + "deps": [], + "description": "NVIDIA CUDA parallel computing platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'apex': { + "name": "NVIDIA Apex", + "level": 3, + "layer": "GPU Runtime", + "role": "Optimization", + "category": "Mixed Precision", + "installer": { + "type": "uv", + "pkg": "apex" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import apex; print(apex.__version__)\"", + "default_port": None + }, + "deps": [ + "cuda" + ], + "description": "NVIDIA mixed precision and distributed training.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/host_platform.py b/src/ai_lsc/registry/layers/host_platform.py new file mode 100644 index 0000000..bdec5f5 --- /dev/null +++ b/src/ai_lsc/registry/layers/host_platform.py @@ -0,0 +1,217 @@ +"""Registry entries for the Host Platform layer (L1). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'tmux': { + "name": "Tmux", + "level": 1, + "layer": "Host Platform", + "role": "Multiplexer", + "category": "Terminal", + "installer": { + "type": "pacman", + "pkg": "tmux" + }, + "launcher": { + "type": "desktop", + "cmd": "tmux -V", + "default_port": None + }, + "deps": [], + "description": "Terminal multiplexer for persistent sessions.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'git': { + "name": "Git", + "level": 1, + "layer": "Host Platform", + "role": "Version Control", + "category": "VCS", + "installer": { + "type": "pacman", + "pkg": "git" + }, + "launcher": { + "type": "desktop", + "cmd": "git --version", + "default_port": None + }, + "deps": [], + "description": "Distributed version control system.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'podman': { + "name": "Podman", + "level": 1, + "layer": "Host Platform", + "role": "Container Runtime", + "category": "Containers", + "installer": { + "type": "pacman", + "pkg": "podman" + }, + "launcher": { + "type": "desktop", + "cmd": "podman --version", + "default_port": None + }, + "deps": [], + "description": "Daemonless container engine for OCI containers.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'docker': { + "name": "Docker", + "level": 1, + "layer": "Host Platform", + "role": "Container Runtime", + "category": "Containers", + "installer": { + "type": "pacman", + "pkg": "docker" + }, + "launcher": { + "type": "systemd", + "cmd": "docker", + "default_port": None + }, + "deps": [], + "description": "Container platform for building and running containers.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'postgresql': { + "name": "PostgreSQL", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "postgresql" + }, + "launcher": { + "type": "systemd", + "cmd": "postgresql", + "default_port": 5432 + }, + "deps": [], + "description": "Relational database used by many frameworks.", + "flags": {} +}, + 'mariadb': { + "name": "MariaDB", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "mariadb" + }, + "launcher": { + "type": "systemd", + "cmd": "mariadb", + "default_port": 3306 + }, + "deps": [], + "description": "Open source relational database.", + "flags": {} +}, + 'redis': { + "name": "Redis", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Cache", + "installer": { + "type": "pacman", + "pkg": "redis" + }, + "launcher": { + "type": "systemd", + "cmd": "redis", + "default_port": 6379 + }, + "deps": [], + "description": "In-memory cache and message broker.", + "flags": {} +}, + 'sqlite3': { + "name": "SQLite3", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Database", + "installer": { + "type": "pacman", + "pkg": "sqlite" + }, + "launcher": { + "type": "desktop", + "cmd": "sqlite3", + "default_port": None + }, + "deps": [], + "description": "C-language library implementing a SQL database engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'duckdb': { + "name": "DuckDB", + "level": 1, + "layer": "Host Platform", + "role": "Foundation", + "category": "Analytical Database", + "installer": { + "type": "uv", + "pkg": "duckdb" + }, + "launcher": { + "type": "desktop", + "cmd": "python3 -c \"import duckdb; print(duckdb.__version__)\"", + "default_port": None + }, + "deps": [], + "description": "In-process analytical database with SQL support.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/inference.py b/src/ai_lsc/registry/layers/inference.py new file mode 100644 index 0000000..e43cbc2 --- /dev/null +++ b/src/ai_lsc/registry/layers/inference.py @@ -0,0 +1,190 @@ +"""Registry entries for the Inference Engines layer (L4). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'ollama': { + "name": "Ollama", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "script", + "cmd": "curl -fsSL https://ollama.com/install.sh | sh" + }, + "launcher": { + "type": "tmux", + "cmd": "OLLAMA_HOST=0.0.0.0:{port} OLLAMA_MODELS={models_root}/ollama ollama serve", + "default_port": 11434 + }, + "deps": [], + "description": "Local LLM runner and model manager.", + "flags": { + "is_ollama": True, + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'llamacpp': { + "name": "llama.cpp", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/ggerganov/llama.cpp" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/llamacpp && make && ./server --port {port}", + "default_port": 8080 + }, + "deps": [], + "description": "Port of Facebook's LLaMA model in C/C++.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'koboldcpp': { + "name": "KoboldCPP", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/LostRuins/koboldcpp" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/koboldcpp && make && ./koboldcpp --port {port}", + "default_port": 5001 + }, + "deps": [], + "description": "GGUF-based LLM inference with CUDA/Vulkan.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": True + } +}, + 'llamafile': { + "name": "Llamafile", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Single-File LLM", + "installer": { + "type": "script", + "cmd": "curl -LO https://github.com/Mozilla-Ocho/llamafile/releases/latest/download/llamafile && chmod +x llamafile" + }, + "launcher": { + "type": "desktop", + "cmd": "{tools_root}/bin/llamafile", + "default_port": None + }, + "deps": [], + "description": "Distribute and run LLMs in a single file.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'turbollm': { + "name": "TurboLLM", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "LLM Runtime", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/turbollm" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/turbollm && python3 -m turbollm serve --port {port}", + "default_port": 8000 + }, + "deps": [ + "cuda" + ], + "description": "Fast LLM serving with tensor parallelism.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'airllm': { + "name": "AirLLM", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Efficient LLM", + "installer": { + "type": "git", + "pkg": "https://github.com/liguodongiot/llm-airforce" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/airllm && python3 -m airllm serve --port {port}", + "default_port": 8001 + }, + "deps": [ + "cuda" + ], + "description": "Memory-efficient 70B LLM inference on 4GB GPUs.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'locally_uncensored': { + "name": "Locally-Uncensored", + "level": 4, + "layer": "Inference Engines", + "role": "Engine", + "category": "Uncensored Models", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/locally-uncensored" + }, + "launcher": { + "type": "desktop", + "cmd": "ollama list", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Curated uncensored model collection and tooling.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/intelligent_routing.py b/src/ai_lsc/registry/layers/intelligent_routing.py new file mode 100644 index 0000000..8e3d103 --- /dev/null +++ b/src/ai_lsc/registry/layers/intelligent_routing.py @@ -0,0 +1,141 @@ +"""Registry entries for the Intelligent Routing layer (L10). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'crewai': { + "name": "CrewAI", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Agent Workflow", + "installer": { + "type": "uv", + "pkg": "crewai" + }, + "launcher": { + "type": "tmux", + "cmd": "crewai", + "default_port": None + }, + "deps": [], + "description": "Framework for orchestrating role-playing autonomous AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'autogen': { + "name": "AutoGen", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Agent Workflow", + "installer": { + "type": "uv", + "pkg": "pyautogen" + }, + "launcher": { + "type": "tmux", + "cmd": "autogen", + "default_port": None + }, + "deps": [], + "description": "Enable next-gen LLM applications with multiple conversable agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'openbrain': { + "name": "OpenBrain", + "level": 10, + "layer": "Intelligent Routing", + "role": "Brain", + "category": "Reasoning Engine", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/openbrain" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openbrain && python3 -m openbrain serve --port {port}", + "default_port": 7100 + }, + "deps": [ + "ollama" + ], + "description": "Open-source reasoning and cognitive engine.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'mnemosyne': { + "name": "Mnemosyne", + "level": 10, + "layer": "Intelligent Routing", + "role": "Memory", + "category": "Spaced Repetition", + "installer": { + "type": "uv", + "pkg": "mnemosyne" + }, + "launcher": { + "type": "desktop", + "cmd": "mnemosyne", + "default_port": None + }, + "deps": [], + "description": "Spaced repetition flashcard program with AI integration.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'mnemo_cortex': { + "name": "Mnemo Cortex", + "level": 10, + "layer": "Intelligent Routing", + "role": "Memory", + "category": "Cortex Memory", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/mnemo-cortex" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/mnemo_cortex && python3 -m mnemo_cortex serve --port {port}", + "default_port": 7200 + }, + "deps": [ + "ollama" + ], + "description": "Hierarchical cortex memory for AI agents.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, +} diff --git a/src/ai_lsc/registry/layers/knowledge_management.py b/src/ai_lsc/registry/layers/knowledge_management.py new file mode 100644 index 0000000..17583b3 --- /dev/null +++ b/src/ai_lsc/registry/layers/knowledge_management.py @@ -0,0 +1,140 @@ +"""Registry entries for the Knowledge Management layer (L13). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'zotero': { + "name": "Zotero", + "level": 13, + "layer": "Knowledge Management", + "role": "Reference Manager", + "category": "Academic References", + "installer": { + "type": "pacman", + "pkg": "zotero" + }, + "launcher": { + "type": "desktop", + "cmd": "zotero", + "default_port": None + }, + "deps": [], + "description": "Free reference management for researchers.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'calibre': { + "name": "Calibre", + "level": 13, + "layer": "Knowledge Management", + "role": "Library Manager", + "category": "Ebook Library", + "installer": { + "type": "pacman", + "pkg": "calibre" + }, + "launcher": { + "type": "desktop", + "cmd": "calibre", + "default_port": None + }, + "deps": [], + "description": "E-book library management and converter.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +}, + 'paperlessngx': { + "name": "Paperless-ngx", + "level": 13, + "layer": "Knowledge Management", + "role": "Document Archive", + "category": "Document Management", + "installer": { + "type": "git", + "pkg": "https://github.com/paperless-ngx/paperless-ngx" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/paperlessngx && python3 manage.py runserver 0.0.0.0:{port}", + "default_port": 8000 + }, + "deps": [ + "postgresql", + "redis" + ], + "description": "Document management system with OCR.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'logseq': { + "name": "Logseq", + "level": 13, + "layer": "Knowledge Management", + "role": "Knowledge Graph", + "category": "Outliner", + "installer": { + "type": "npm", + "pkg": "logseq" + }, + "launcher": { + "type": "desktop", + "cmd": "logseq", + "default_port": None + }, + "deps": [], + "description": "Privacy-first knowledge graph outliner.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'joplin': { + "name": "Joplin", + "level": 13, + "layer": "Knowledge Management", + "role": "Note Taking", + "category": "Notes", + "installer": { + "type": "pacman", + "pkg": "joplin" + }, + "launcher": { + "type": "desktop", + "cmd": "joplin", + "default_port": None + }, + "deps": [], + "description": "Open-source note taking and to-do application.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +}, +} diff --git a/src/ai_lsc/registry/layers/observability.py b/src/ai_lsc/registry/layers/observability.py new file mode 100644 index 0000000..69ffcfb --- /dev/null +++ b/src/ai_lsc/registry/layers/observability.py @@ -0,0 +1,185 @@ +"""Registry entries for the Observability layer (L9). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'btop': { + "name": "Btop", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Metrics", + "installer": { + "type": "pacman", + "pkg": "btop" + }, + "launcher": { + "type": "desktop", + "cmd": "x-terminal-emulator -e btop", + "default_port": None + }, + "deps": [], + "description": "Resource monitor that shows usage and stats.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": False + } +}, + 'glances': { + "name": "Glances", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Metrics", + "installer": { + "type": "pacman", + "pkg": "glances" + }, + "launcher": { + "type": "tmux", + "cmd": "glances -w --port {port}", + "default_port": 61208 + }, + "deps": [], + "description": "Cross-platform system monitoring tool.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'prometheus': { + "name": "Prometheus", + "level": 9, + "layer": "Observability", + "role": "Metrics Collector", + "category": "Metrics", + "installer": { + "type": "pacman", + "pkg": "prometheus" + }, + "launcher": { + "type": "systemd", + "cmd": "prometheus", + "default_port": 9090 + }, + "deps": [], + "description": "Open-source monitoring and alerting toolkit.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'grafana': { + "name": "Grafana", + "level": 9, + "layer": "Observability", + "role": "Dashboard", + "category": "Visualization", + "installer": { + "type": "pacman", + "pkg": "grafana" + }, + "launcher": { + "type": "systemd", + "cmd": "grafana-server", + "default_port": 3000 + }, + "deps": [], + "description": "Multi-source observability dashboards and visualization.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'grafana_alloy': { + "name": "Grafana Alloy", + "level": 9, + "layer": "Observability", + "role": "Collector", + "category": "Telemetry", + "installer": { + "type": "script", + "cmd": "curl -fsSL https://raw.githubusercontent.com/grafana/alloy/main/install.sh | sh" + }, + "launcher": { + "type": "tmux", + "cmd": "alloy run --server.http.listen-port={port}", + "default_port": 12345 + }, + "deps": [ + "prometheus" + ], + "description": "OpenTelemetry collector with Prometheus integration.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'opik': { + "name": "Opik", + "level": 9, + "layer": "Observability", + "role": "LLM Tracing", + "category": "AI Observability", + "installer": { + "type": "uv", + "pkg": "opik" + }, + "launcher": { + "type": "tmux", + "cmd": "opik serve --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Open-source LLM observability and tracing platform.", + "flags": { + "has_cli": True, + "has_gui": False, + "has_web": True + } +}, + 'wayland': { + "name": "wayland.ai", + "level": 9, + "layer": "Observability", + "role": "AI Compositor", + "category": "AI Desktop", + "installer": { + "type": "pacman", + "pkg": "wayland" + }, + "launcher": { + "type": "desktop", + "cmd": "weston", + "default_port": None + }, + "deps": [], + "description": "AI-native Wayland compositor for integrated AI desktop environments.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": False + } +}, +} diff --git a/src/ai_lsc/registry/layers/user_interfaces.py b/src/ai_lsc/registry/layers/user_interfaces.py new file mode 100644 index 0000000..b07e8e9 --- /dev/null +++ b/src/ai_lsc/registry/layers/user_interfaces.py @@ -0,0 +1,350 @@ +"""Registry entries for the User Interfaces layer (L11). + +Auto-extracted from the monolithic ``defaults.py``. Each entry +follows the standard registry schema: + +- ``name``: human-readable tool name +- ``level``: 13-layer taxonomy level (1-13) +- ``layer``: this layer name +- ``role``: role within the layer +- ``category``: functional category +- ``installer``: installation method +- ``launcher``: process launcher specification +- ``deps``: list of required tool IDs +- ``description``: short description +- ``flags``: optional boolean flags + +This module is consumed by +:mod:`ai_lsc.registry.loader`. +""" + +TOOLS: dict[str, dict] = { + 'hermes': { + "name": "Hermes", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Ecosystem Dashboard", + "installer": { + "type": "npm", + "pkg": "hermes-ai" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes dashboard --port {port} --data-dir {workspaces_root}/hermes & hermes desktop --data-dir {workspaces_root}/hermes", + "default_port": 17050 + }, + "deps": [ + "ollama" + ], + "description": "Unified desktop and dashboard environment for the AI ecosystem.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +}, + 'openwebui': { + "name": "Open WebUI", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Chat Frontend", + "installer": { + "type": "uv", + "pkg": "open-webui" + }, + "launcher": { + "type": "tmux", + "cmd": "open-webui serve --port {port} --data-dir {workspaces_root}/openwebui", + "default_port": 8080 + }, + "deps": [ + "ollama" + ], + "description": "Extensible frontend for LLMs.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'anythingllm': { + "name": "AnythingLLM", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Chat", + "installer": { + "type": "git_node", + "pkg": "https://github.com/Mintplex-Labs/anything-llm.git" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/anythingllm && yarn dev", + "default_port": 3001 + }, + "deps": [], + "description": "Full-stack application for conversational AI.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'flowise': { + "name": "Flowise", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Workflow", + "installer": { + "type": "npm", + "pkg": "flowise" + }, + "launcher": { + "type": "tmux", + "cmd": "npx flowise start --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Drag & drop UI to build customized LLM flows.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'dify': { + "name": "Dify", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Workflow", + "installer": { + "type": "git", + "pkg": "https://github.com/langgenius/dify.git" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/dify/docker && docker compose up", + "default_port": 80 + }, + "deps": [ + "postgresql", + "redis" + ], + "description": "LLM application development platform.", + "flags": { + "is_docker": True, + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'invokeai': { + "name": "InvokeAI", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Image Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/invoke-ai/InvokeAI" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/invokeai && invokeai --host 0.0.0.0 --port {port}", + "default_port": 9090 + }, + "deps": [ + "cuda" + ], + "description": "Professional AI image generation workspace.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + } +}, + 'forge': { + "name": "Forge (A1111)", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Image Generation", + "installer": { + "type": "git", + "pkg": "https://github.com/AUTOMATIC1111/stable-diffusion-webui-forge" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/forge && python3 launch.py --port {port}", + "default_port": 7860 + }, + "deps": [ + "cuda" + ], + "description": "Stable Diffusion WebUI Forge (optimized fork).", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'dashy': { + "name": "Dashy", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Homepage", + "installer": { + "type": "npm", + "pkg": "dashy" + }, + "launcher": { + "type": "tmux", + "cmd": "dashy --port {port}", + "default_port": 3000 + }, + "deps": [], + "description": "Highly customizable dashboard and homepage.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + 'obsidian': { + "name": "Obsidian", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Knowledge Graph Notes", + "installer": { + "type": "pacman", + "pkg": "obsidian" + }, + "launcher": { + "type": "desktop", + "cmd": "obsidian", + "default_port": None + }, + "deps": [], + "description": "Knowledge graph note-taking and markdown editor.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'local_llm_launcher': { + "name": "Local LLM Launcher", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "LLM GUI", + "installer": { + "type": "git", + "pkg": "https://github.com/nicely-done/local-llm-launcher-gui" + }, + "launcher": { + "type": "desktop", + "cmd": "cd {tools_root}/local_llm_launcher && python3 main.py", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "GUI launcher and manager for local LLMs.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'hermes_desktop': { + "name": "Hermes Desktop", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Desktop Agent", + "installer": { + "type": "npm", + "pkg": "hermes-desktop" + }, + "launcher": { + "type": "desktop", + "cmd": "hermes desktop", + "default_port": None + }, + "deps": [ + "ollama" + ], + "description": "Hermes desktop agent environment.", + "flags": { + "has_cli": False, + "has_gui": True, + "has_web": False + } +}, + 'hermes_dashboard_page': { + "name": "Hermes Dashboard", + "level": 11, + "layer": "User Interfaces", + "role": "Face", + "category": "Dashboard", + "installer": { + "type": "npm", + "pkg": "hermes-dashboard" + }, + "launcher": { + "type": "tmux", + "cmd": "hermes dashboard --port {port}", + "default_port": 17050 + }, + "deps": [ + "ollama" + ], + "description": "Hermes ecosystem monitoring dashboard.", + "flags": { + "has_cli": False, + "has_gui": False, + "has_web": True + } +}, + "openjarvis": { + "name": "OpenJarvis", + "level": 11, + "layer": "User Interfaces", + "role": "Central Intelligence", + "category": "AI Assistant Platform", + "installer": { + "type": "git_node", + "pkg": "https://github.com/openjarvis/openjarvis.git", + "post_install": "npm install && npm run build" + }, + "launcher": { + "type": "tmux", + "cmd": "cd {tools_root}/openjarvis && npm start -- --port {port}", + "default_port": 17070 + }, + "deps": [ + "ollama", + "qdrant" + ], + "description": "Central AI assistant platform with multi-modal I/O, memory integration, agentic task execution, and unified dashboard. The brain of the intelligent stack.", + "flags": { + "has_cli": True, + "has_gui": True, + "has_web": True + }, + "filesystem": { + "install": "tools/openjarvis", + "config": "configs/openjarvis", + "data": "workspaces/openjarvis", + "cache": "cache/openjarvis", + "logs": "logs/openjarvis" + } +}, +} diff --git a/src/ai_lsc/registry/loader.py b/src/ai_lsc/registry/loader.py new file mode 100644 index 0000000..13a6007 --- /dev/null +++ b/src/ai_lsc/registry/loader.py @@ -0,0 +1,89 @@ +"""Registry loader -- discovers and merges per-layer registry modules. + +On startup the loader scans ``ai_lsc.registry.layers`` for every +``.py`` file that exports a ``TOOLS`` dict, and merges them into a +single unified registry dict. + +This replaces the monolithic ``DEFAULT_REGISTRY`` dict with a +zero-merge-conflict modular approach: each layer lives in its own +file and is independently editable. +""" + +from __future__ import annotations + +import importlib +import pkgutil +from pathlib import Path +from typing import Any + +_LAYERS_DIR = Path(__file__).resolve().parent / "layers" + + +def load_merged_registry() -> dict[str, dict[str, Any]]: + """Discover and merge all layer TOOLS dicts into one registry dict. + + Each layer module should export ``TOOLS: dict[str, dict]`` where + keys are tool IDs and values are the full metadata dicts. + + Returns the merged ``{tool_id: metadata}`` dictionary, with later + files overriding earlier ones on key collision (which should never + happen if layers are well-separated). + """ + merged: dict[str, dict[str, Any]] = {} + + # Import the layers package + try: + layers_pkg = importlib.import_module("ai_lsc.registry.layers") + except ImportError: + return merged + + for importer, modname, ispkg in pkgutil.iter_modules( + layers_pkg.__path__, prefix=layers_pkg.__name__ + "." + ): + if ispkg: + continue + try: + mod = importlib.import_module(modname) + except Exception: + continue + + tools = getattr(mod, "TOOLS", None) + + if isinstance(tools, dict): + # Dict format: {tool_id: metadata, ...} + _merge_tools_dict(merged, tools) + elif isinstance(tools, list): + # Legacy list format: [{...}, ...] + _merge_tools_list(merged, tools) + + return merged + + +def _merge_tools_dict( + target: dict[str, dict[str, Any]], + tools: dict[str, dict[str, Any]], +) -> None: + """Merge a ``TOOLS`` dict into the target registry dict.""" + for tool_id, entry in tools.items(): + if not isinstance(entry, dict): + continue + # Inject tool_id into entry if missing + if "tool_id" not in entry: + entry = {**entry, "tool_id": tool_id} + target[tool_id] = entry + + +def _merge_tools_list( + target: dict[str, dict[str, Any]], + tools: list[dict[str, Any]], +) -> None: + """Merge a legacy ``TOOLS`` list into the target registry dict.""" + for entry in tools: + if not isinstance(entry, dict): + continue + tool_id = entry.get("tool_id") + if tool_id is None: + name = entry.get("name", "") + tool_id = name.lower().replace(" ", "_").replace("/", "_") + entry["tool_id"] = tool_id + target[tool_id] = entry diff --git a/src/ai_lsc/registry/manager.py b/src/ai_lsc/registry/manager.py new file mode 100644 index 0000000..686ccd3 --- /dev/null +++ b/src/ai_lsc/registry/manager.py @@ -0,0 +1,90 @@ +""" +AI-LSC — Registry manager. + +Load / merge / query the on-disk ecosystem registry. On first run the +default registry is written to ``/registry/ecosystem.json``; +on subsequent runs any *new* keys from ``DEFAULT_REGISTRY`` are merged +in so the registry auto-evolves across releases without user action. + +All path operations use ``pathlib.Path`` instead of ``os.path``. +""" + +from __future__ import annotations + +import json +from itertools import chain +from pathlib import Path +from typing import Any + +from ai_lsc.registry.defaults import DEFAULT_REGISTRY + + +class RegistryManager: + """Knowledge-graph engine backed by a JSON file on disk. + + Parameters + ---------- + registry_dir: + Absolute path to the directory containing ``ecosystem.json``. + """ + + def __init__(self, registry_dir: str | Path) -> None: + self.registry_dir = Path(registry_dir) + self.registry_file: Path = self.registry_dir / "ecosystem.json" + self.data: dict[str, dict[str, Any]] = {} + self._bootstrap() + + # ── Bootstrap / merge ──────────────────────────────────────────── + + def _bootstrap(self) -> None: + self.registry_dir.mkdir(parents=True, exist_ok=True) + if not self.registry_file.exists(): + self.registry_file.write_text( + json.dumps(DEFAULT_REGISTRY, indent=4), encoding="utf-8" + ) + self.data = json.loads( + self.registry_file.read_text(encoding="utf-8") + ) + self._merge_with_defaults() + + def _merge_with_defaults(self) -> None: + new_keys = { + k: v for k, v in DEFAULT_REGISTRY.items() + if k not in self.data + } + if not new_keys: + return + self.data.update(new_keys) + self.registry_file.write_text( + json.dumps(self.data, indent=4), encoding="utf-8" + ) + + # ── Queries ────────────────────────────────────────────────────── + + def get_all_tools(self) -> dict[str, dict[str, Any]]: + """Return the full registry dict.""" + return self.data + + def get_tool(self, tool_id: str) -> dict[str, Any]: + """Return a single tool's raw dict, or ``{}`` if unknown.""" + return self.data.get(tool_id, {}) + + def get_grouped_by_layer(self) -> dict[str, list[tuple[str, dict]]]: + """Return tools grouped and sorted by their ``layer`` field.""" + layers: dict[str, list[tuple[str, dict]]] = {} + for t_id, meta in self.data.items(): + layers.setdefault( + meta.get("layer", "Uncategorized"), [] + ).append((t_id, meta)) + return dict(sorted(layers.items())) + + def check_dependencies( + self, selected: list[str], + ) -> list[str]: + """Return tool IDs that are required but missing from *selected*.""" + all_deps = list(chain.from_iterable( + self.get_tool(t).get("deps", []) + for t in selected + if not t.startswith("skill:") + )) + return list({d for d in all_deps if d not in selected}) diff --git a/src/ai_lsc/registry/stack_templates/__init__.py b/src/ai_lsc/registry/stack_templates/__init__.py new file mode 100644 index 0000000..10d5166 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/__init__.py @@ -0,0 +1,8 @@ +"""AI-LSC stack templates sub-package. + +Pre-configured tool stacks that can be applied via the StackWizard +instead of manually selecting individual tools. + +Each template is a JSON file in this directory defining a curated set +of tools (by registry ID or git source URL) for a specific use case. +""" diff --git a/src/ai_lsc/registry/stack_templates/agentic-os-stack.json b/src/ai_lsc/registry/stack_templates/agentic-os-stack.json new file mode 100644 index 0000000..77b9ded --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/agentic-os-stack.json @@ -0,0 +1,33 @@ +{ + "id": "agentic-os-stack", + "name": "Agentic OS — Full Orchestration Stack", + "description": "Production agentic orchestration stack: Ollama inference + LibreChat agent frontend + Qdrant vector memory + Redis task queue + LiteLLM multi-provider routing. All LLM endpoints point to localhost — no external API keys needed.", + "version": "2.0", + "author": "ai-lsc", + "tags": ["agentic", "orchestration", "function-calling", "rag", "multi-model", "production", "local-first"], + "endpoints": { + "litellm_base": "http://localhost:4000", + "litellm_model": "ollama/qwen2.5:32b", + "librechat_endpoint": "http://localhost:3080", + "qdrant_endpoint": "http://localhost:6333", + "redis_endpoint": "localhost:6379" + }, + "tools": [ + "ollama", + "redis", + "qdrant", + "litellm", + "n8n", + "librechat", + "mariadb", + "glances", + "fabric" + ], + "notes": { + "architecture": "The agents/ package bridges LibreChat's function-calling to AI-LSC's RuntimeExecutor. The LLM can start/stop services, pull models, and inject skills through natural language.", + "model_routing": "LiteLLM proxy at localhost:4000 normalizes all local Ollama models into a single OpenAI-compatible endpoint. Ollama serves at localhost:11434. LiteLLM config points: model_list: [{model_name: 'qwen2.5', litellm_params: {model: 'ollama/qwen2.5:32b', api_base: 'http://localhost:11434/v1'}}].", + "memory_layers": "Redis (localhost:6379) = hot path (task queue, pub/sub, status cache). MariaDB = cold path (audit logs, persisted memory, config). Qdrant (localhost:6333) = semantic index (RAG, skill matching, vector search).", + "agent_frontend": "LibreChat at localhost:3080 provides multi-provider support with native OpenAI tool-calling format. Configure it to point at LiteLLM as the assistant endpoint.", + "workflow": "n8n at localhost:5678 orchestrates complex multi-step agent workflows beyond single-turn tool calls." + } +} diff --git a/src/ai_lsc/registry/stack_templates/ai-image-gen-local.json b/src/ai_lsc/registry/stack_templates/ai-image-gen-local.json new file mode 100644 index 0000000..951d762 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/ai-image-gen-local.json @@ -0,0 +1,24 @@ +{ + "id": "ai-image-gen-local", + "name": "AI Image Generation — Local Creative Studio", + "description": "Run Stable Diffusion, FLUX, and ComfyUI entirely on your GPU. No DALL-E subscriptions, no Midjourney fees. Generate images, edit photos, and build automated generation pipelines — the homelab creative AI stack that's exploding on YouTube.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["image-gen", "stable-diffusion", "flux", "comfyui", "creative", "youtube-trending", "local-first", "gpu"], + "endpoints": { + "comfyui": "http://localhost:8188", + "forge": "http://localhost:7860" + }, + "tools": [ + "forge", + "invokeai", + "fabric" + ], + "notes": { + "youtube_context": "Local AI image generation has massive YouTube presence. Channels like @mreflow, @aaronweikle, and @flyingjunior run FLUX.1 and SDXL locally. ComfyUI tutorials consistently hit 1M+ views. This stack covers the three most popular workflows.", + "recommended_models": "FLUX.1-dev (12B, best quality), FLUX.1-schnell (fast generation), stable-diffusion-xl-base-1.0 (classic SDXL), juggernaut-xl (fine-tuned SDXL), dreamshaper-xl (lightweight)", + "setup": "Forge (optimized WebUI) at localhost:7860 is the easiest entry point. InvokeAI provides a more polished creative workflow. Both auto-download models on first run. Set --listen 0.0.0.0 to access from other devices.", + "workflow": "Quick gen: Forge with FLUX.1-schnell (~2s per image on 4090). Quality gen: FLUX.1-dev with refined prompts. Batch processing: Forge API + Fabric for automated pipeline workflows. ControlNet for pose/depth/edge-guided generation.", + "tips": "8GB VRAM minimum for FLUX.1-schnell (FP8). 24GB for FLUX.1-dev. Use xformers and sdp attention for speed. Torch compile adds ~30% throughput after first warmup. Batch size 1 with tiled VAE for large resolutions on limited VRAM." + } +} diff --git a/src/ai_lsc/registry/stack_templates/aider-ollama-vibe-coding.json b/src/ai_lsc/registry/stack_templates/aider-ollama-vibe-coding.json new file mode 100644 index 0000000..25546f8 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/aider-ollama-vibe-coding.json @@ -0,0 +1,27 @@ +{ + "id": "aider-ollama-vibe-coding", + "name": "Aider + Ollama Vibe Coding Stack", + "description": "The #1 YouTube AI coding stack of 2025. Aider pair-programmer wired to local Ollama models. Zero API keys, zero cloud — vibe code entirely offline with 32B+ models that rival GPT-4 for coding tasks.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["vibe-coding", "aider", "ollama", "coding", "youtube-trending", "local-first", "offline"], + "endpoints": { + "ollama_base": "http://localhost:11434/v1", + "aider_model": "ollama/qwen2.5-coder:32b" + }, + "tools": [ + "ollama", + "aider", + "fabric", + "ripgrep", + "fd", + "tree_sitter" + ], + "notes": { + "youtube_context": "This is the exact stack from the viral 'Vibe Coding with Local AI' videos: Aider + Ollama + Qwen2.5-Coder. Creators like @networkchuck, @cbarks, and @techwithtim have built full projects live on stream with this combo.", + "recommended_models": "qwen2.5-coder:32b (best balance), deepseek-coder-v2:236b (strongest), codestral:22b (fast), llama3.1:70b (general), phi-4:14b (lightweight)", + "setup": "Run: ollama pull qwen2.5-coder:32b && aider --model ollama/qwen2.5-coder:32b. Aider auto-discovers Ollama on localhost:11434.", + "workflow": "Aider edits code in your git repo using local LLM. Fabric transforms text/prompts. ripgrep + fd + tree-sitter power Aider's repository map for large codebase awareness.", + "tips": "Use aider --message 'implement X' for single tasks. Use aider --chat for interactive sessions. Add .aider.conf.yml to your project root for per-project model config." + } +} diff --git a/src/ai_lsc/registry/stack_templates/claude-code-setup.json b/src/ai_lsc/registry/stack_templates/claude-code-setup.json new file mode 100644 index 0000000..4231723 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/claude-code-setup.json @@ -0,0 +1,46 @@ +{ + "id": "claude-code-setup", + "name": "Claude Code Local Stack", + "description": "Claude Code development environment wired to local Ollama inference. No cloud API keys required — all LLM calls route through localhost:11434. Includes memory, prompt engineering, and multi-agent coordination.", + "version": "2.0", + "author": "ai-lsc", + "tags": ["claude", "development", "ai-coding", "agent", "memory", "local-first"], + "endpoints": { + "claude_api_base": "http://localhost:11434/v1", + "anthropic_api_key": "ollama", + "anthropic_model": "claude-4-sonnet" + }, + "tools": [ + "claude_code", + "ollama", + "aider", + "fabric", + { + "id": "claude_mem", + "name": "Claude Mem", + "source": "https://github.com/nicely-done/claude-mem", + "category": "Memory", + "role": "Context Memory", + "description": "Persistent conversation memory layer for Claude Code sessions", + "installer": {"type": "git", "pkg": "https://github.com/nicely-done/claude-mem"}, + "launcher": {"type": "tmux", "cmd": "claude-mem serve --port {port}", "default_port": 9600}, + "flags": {"has_cli": true, "has_gui": false, "has_web": true} + }, + { + "id": "claude_squad", + "name": "Claude Squad", + "source": "https://github.com/nicely-done/claude-squad", + "category": "Multi-Agent", + "role": "Team Coordination", + "description": "Multi-agent team orchestration for parallel Claude Code instances", + "installer": {"type": "git", "pkg": "https://github.com/nicely-done/claude-squad"}, + "launcher": {"type": "tmux", "cmd": "claude-squad coordinate --port {port}", "default_port": 9603}, + "flags": {"has_cli": true, "has_gui": false, "has_web": true} + } + ], + "notes": { + "setup": "Set CLAUDE_CODE_USE_BEDROCK=1 or configure claude-code to point at the Ollama endpoint. Anthropic Claude models are proxied through LiteLLM or Ollama's OpenAI-compatible API at localhost:11434.", + "recommended_models": "claude-4-sonnet (14B+ local), qwen2.5-coder:32b, deepseek-coder-v2:236b", + "workflow": "Claude Code → Ollama (localhost:11434) → local weights. Aider handles pair programming with the same endpoint. Fabric provides CLI text-processing pipelines." + } +} diff --git a/src/ai_lsc/registry/stack_templates/deepseek-r1-local-reasoning.json b/src/ai_lsc/registry/stack_templates/deepseek-r1-local-reasoning.json new file mode 100644 index 0000000..84f0df0 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/deepseek-r1-local-reasoning.json @@ -0,0 +1,29 @@ +{ + "id": "deepseek-r1-local-reasoning", + "name": "DeepSeek R1 — Local Reasoning Engine", + "description": "Run DeepSeek R1 (the open-source reasoning model that challenged OpenAI o1) entirely locally. vLLM or llama.cpp serves the 70B distilled model with chain-of-thought reasoning visible in real-time. The most hyped local AI setup of early 2025.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["deepseek", "reasoning", "r1", "vllm", "llama.cpp", "youtube-trending", "local-first", "math", "coding"], + "endpoints": { + "ollama_base": "http://localhost:11434", + "vllm_base": "http://localhost:8000", + "litellm_base": "http://localhost:4000" + }, + "tools": [ + "ollama", + "llamacpp", + "vllm", + "litellm", + "openwebui", + "aider", + "fabric" + ], + "notes": { + "youtube_context": "DeepSeek R1 broke the internet in Jan 2025 with reasoning capabilities matching OpenAI o1 at a fraction of the cost. YouTubers like @fmateo09, @aaronweikle, and @marcusrbrown showed how to run the distilled 32B/70B models locally for free. This template recreates that exact setup.", + "recommended_models": "deepseek-r1:32b (24GB VRAM via vLLM), deepseek-r1:70b (2x 24GB GPUs or quantized), deepseek-r1-distill-qwen:32b (fastest reasoning), deepseek-coder-v2:236b (split across GPUs)", + "setup": "Fast path: ollama pull deepseek-r1:32b && open-webui (auto-connects). High-throughput: vLLM serves with speculative decoding at localhost:8000. LiteLLM at 4000 normalizes the endpoint for any OpenAI-compatible client.", + "workflow": "Reasoning queries hit the model through Open WebUI or any API client. The chain-of-thought (thinking tokens) is visible in real-time. Aider uses the same endpoint for reasoning-powered code generation. Fabric pipes reasoning output through text-transform chains.", + "tips": "vLLM with --enable-chunked-prefill handles long contexts better. For <24GB VRAM, use deepseek-r1:14b or the distilled Qwen variants. Set temperature=0.6 for best reasoning quality — higher temps degrade chain-of-thought coherence." + } +} diff --git a/src/ai_lsc/registry/stack_templates/hermes-ai-coder-stack.json b/src/ai_lsc/registry/stack_templates/hermes-ai-coder-stack.json new file mode 100644 index 0000000..a7513fe --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/hermes-ai-coder-stack.json @@ -0,0 +1,41 @@ +{ + "id": "hermes-ai-coder-stack", + "name": "Hermes — AI Coder & Agent Stack", + "description": "Maximum coding intelligence: Aider pair programming + Hermes agent orchestration + Agno multi-agent framework + CrewAI team collaboration + Ollama local inference + OpenWebUI chat frontend + full codebase awareness tools. The everything-stack for serious AI-assisted development.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["hermes", "coding", "agent", "multi-agent", "agno", "crewai", "aider", "premium", "local-first"], + "endpoints": { + "ollama_base": "http://localhost:11434/v1", + "litellm_base": "http://localhost:4000", + "openwebui": "http://localhost:3000", + "hermes_agent": "http://localhost:17051", + "hermes_dashboard": "http://localhost:17050" + }, + "tools": [ + "ollama", + "aider", + "litellm", + "openwebui", + "hermes", + "hermes_agent", + "hermes_desktop", + "agno", + "crewai", + "autogen", + "fabric", + "chromadb", + "ripgrep", + "fd", + "tree_sitter" + ], + "notes": { + "philosophy": "Hermes is the messenger of the gods — this stack routes every coding task through the best available local AI pathway. Aider for pair programming, Agno for structured agent pipelines, CrewAI for team-based task decomposition, Hermes Desktop for the unified agent GUI, and Hermes Agent for the autonomous runtime. LiteLLM normalizes all model access so every tool talks to Ollama on localhost:11434.", + "recommended_models": "qwen2.5-coder:32b (primary coding, beats GPT-4 on SWE-bench), deepseek-coder-v2:236b (complex reasoning), codestral:22b (fast edits), llama3.1:70b (architectural planning), phi-4:14b (quick tasks), nomic-embed-text (codebase embeddings for RAG)", + "coding_interface": "Aider is the primary coding interface — it has the best git integration, whole-repo awareness, and cost-efficient token usage with local models. For interactive exploration, Hermes Desktop provides a visual agent environment. For conversational coding, OpenWebUI connects to the same Ollama endpoint.", + "agentic_hierarchy": "Single tasks → Aider (fast, direct). Multi-step pipelines → Agno (sequential agents with memory). Team projects → CrewAI (role-based: Architect, Coder, Reviewer, Tester). Full autonomy → Hermes Agent (persistent background agent with tool access). Cross-framework orchestration → AutoGen (Microsoft's framework for heterogeneous agent teams).", + "codebase_awareness": "rigrep finds symbols, fd navigates directories, tree-sitter parses AST. Aider uses repo-map to build a compressed representation of your entire codebase. ChromaDB indexes code chunks for semantic search. This gives every agent in the stack full awareness of your project structure.", + "setup": "1) Pull models: ollama pull qwen2.5-coder:32b && ollama pull nomic-embed-text. 2) Start Ollama (systemd or tmux). 3) Start LiteLLM pointing at localhost:11434. 4) Launch Hermes Desktop for the GUI agent. 5) Run aider in your project repo. 6) OpenWebUI for browser-based chat with your code.", + "tips": "Use LiteLLM to switch between models per-task without restarting tools. Aider's /ask command lets you query the model without editing files — perfect for quick questions. Agno agents can call Aider as a tool for code modifications. ChromaDB codebase indexing runs once, then every agent benefits from semantic search. Keep Hermes Dashboard open on a second monitor to monitor all agent activity." + } +} diff --git a/src/ai_lsc/registry/stack_templates/local-llm-lab.json b/src/ai_lsc/registry/stack_templates/local-llm-lab.json new file mode 100644 index 0000000..a60cb47 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/local-llm-lab.json @@ -0,0 +1,31 @@ +{ + "id": "local-llm-lab", + "name": "Local LLM Lab", + "description": "Self-hosted LLM playground with multiple inference backends, model management, vector store, and chat interface. Everything runs on localhost — zero cloud dependencies.", + "version": "2.0", + "author": "ai-lsc", + "tags": ["llm", "local-ai", "inference", "chat", "rag", "local-first"], + "endpoints": { + "ollama_base": "http://localhost:11434", + "openwebui": "http://localhost:3000", + "chromadb": "http://localhost:8000", + "litellm_base": "http://localhost:4000" + }, + "tools": [ + "ollama", + "llamacpp", + "vllm", + "litellm", + "openwebui", + "chromadb", + "whisper", + "docling", + "aider", + "fabric" + ], + "notes": { + "setup": "Ollama at 11434 is the primary inference engine. vLLM and llama.cpp are alternative backends for GGUF/exl2 formats. LiteLLM at 4000 provides a unified OpenAI-compatible API over all backends.", + "recommended_models": "llama3.1:70b, qwen2.5-coder:32b, mistral-nemo:12b, codestral:22b, phi-4:14b, gemma2:27b", + "workflow": "OpenWebUI provides the browser chat frontend at localhost:3000 connected to Ollama. ChromaDB handles RAG document embeddings. Whisper does local speech-to-text. Docling converts PDFs to Markdown for ingestion. Aider connects to the same Ollama endpoint for pair programming. Fabric provides CLI text-transform pipelines." + } +} diff --git a/src/ai_lsc/registry/stack_templates/manager.py b/src/ai_lsc/registry/stack_templates/manager.py new file mode 100644 index 0000000..228ba44 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/manager.py @@ -0,0 +1,263 @@ +"""Stack template manager -- loads, lists, and resolves templates. + +Templates are JSON files in ``ai_lsc/registry/stack_templates/``. Each +template defines: + +* ``name``: human-readable template name +* ``description``: one-line summary +* ``tags``: searchable category labels +* ``version``: template version string +* ``tools``: list of tool references (registry IDs or git-source dicts) + +The manager can resolve a template into a flat list of tool IDs by +merging registry lookups with git-source entries (which are auto-registered +as new tools on the fly). +""" + +from __future__ import annotations + +import json +import os +from pathlib import Path +from typing import Any + +_TEMPLATES_DIR = Path(__file__).resolve().parent + + +class StackTemplateManager: + """Discover and resolve stack templates. + + Parameters + ---------- + extra_dirs : + Additional directories to scan for template files + (e.g. user-supplied ``~/.config/ai-lsc/stack_templates/``). + """ + + def __init__(self, extra_dirs: list[str | Path] | None = None) -> None: + self._templates: dict[str, dict[str, Any]] = {} + self._scan_dirs = [_TEMPLATES_DIR] + if extra_dirs: + self._scan_dirs.extend( + Path(d) for d in extra_dirs if Path(d).is_dir() + ) + self._load_all() + + # ── Discovery ──────────────────────────────────────────────────── + + def _load_all(self) -> None: + """Scan all template directories and load valid templates.""" + for directory in self._scan_dirs: + for fname in sorted(directory.iterdir()): + if fname.suffix in (".json", ".yaml", ".yml"): + try: + tpl = self._load_file(fname) + except Exception: + continue + if tpl: + self._templates[tpl["id"]] = tpl + + @staticmethod + def _load_file(path: Path) -> dict[str, Any] | None: + """Load and validate a single template file.""" + suffix = path.suffix.lower() + + if suffix == ".json": + raw = json.loads(path.read_text(encoding="utf-8")) + else: + # YAML support -- optional dependency + try: + import yaml # noqa: F401 + except ImportError: + return None + raw = yaml.safe_load(path.read_text(encoding="utf-8")) + + if not isinstance(raw, dict): + return None + if "name" not in raw or "tools" not in raw: + return None + + # Synthesise a stable ID from the filename if not given + raw.setdefault("id", path.stem) + raw.setdefault("tags", []) + raw.setdefault("version", "1.0") + raw.setdefault("description", "") + raw.setdefault("author", "ai-lsc") + return raw + + # ── Queries ────────────────────────────────────────────────────── + + def list_templates(self) -> list[dict[str, Any]]: + """Return all loaded templates as summary dicts.""" + return [ + { + "id": tpl["id"], + "name": tpl["name"], + "description": tpl.get("description", ""), + "tags": tpl.get("tags", []), + "version": tpl.get("version", "1.0"), + "tool_count": len(tpl.get("tools", [])), + "source": "builtin" if self._is_builtin(tpl["id"]) else "custom", + } + for tpl in sorted( + self._templates.values(), key=lambda t: t["name"] + ) + ] + + def get_template(self, template_id: str) -> dict[str, Any] | None: + """Return the full template dict, or ``None``.""" + return self._templates.get(template_id) + + def _is_builtin(self, template_id: str) -> bool: + return any( + (d / f"{template_id}.json").exists() + or (d / f"{template_id}.yaml").exists() + or (d / f"{template_id}.yml").exists() + for d in self._scan_dirs + ) + + def filter_by_tag(self, tag: str) -> list[dict[str, Any]]: + """Return templates matching a given tag.""" + return [ + t for t in self.list_templates() + if tag.lower() in [x.lower() for x in t["tags"]] + ] + + # ── Resolution ──────────────────────────────────────────────────── + + def resolve_tool_ids( + self, + template_id: str, + registry: object | None = None, + ) -> tuple[list[str], list[dict[str, Any]]]: + """Resolve a template into registry tool IDs + new-tool entries. + + Parameters + ---------- + template_id : + The template to resolve. + registry : + Optional ``RegistryManager`` used to validate existing + tool IDs and look up dependency chains. + + Returns + ------- + (known_ids, new_entries) : + *known_ids* are tool IDs already in the registry. + *new_entries* are raw dicts for tools that need to be + auto-registered (git-source entries). + + Example + ------- + >>> ids, new = mgr.resolve_tool_ids("claude-code-setup", registry) + >>> # ids = ["claude_code", "ollama", "aider", ...] + >>> # new = [{"name": "Godmod3", "source": "https://...", ...}] + """ + tpl = self._templates.get(template_id) + if not tpl: + return [], [] + + known_ids: list[str] = [] + new_entries: list[dict[str, Any]] = [] + + for tool_ref in tpl.get("tools", []): + if isinstance(tool_ref, str): + # Plain registry ID reference + known_ids.append(tool_ref) + elif isinstance(tool_ref, dict): + # Structured reference + if "id" in tool_ref: + known_ids.append(tool_ref["id"]) + elif "source" in tool_ref: + # Git-source: new tool to auto-register + new_entries.append(tool_ref) + # Synthesise an ID from the source URL + known_ids.append(tool_ref.get( + "id", + _derive_id_from_source(tool_ref["source"]), + )) + + # Deduplicate while preserving order + seen: set[str] = set() + deduped_ids: list[str] = [] + for tid in known_ids: + if tid not in seen: + seen.add(tid) + deduped_ids.append(tid) + + return deduped_ids, new_entries + + # ── Creation ───────────────────────────────────────────────────── + + def create_template( + self, + name: str, + tools: list[str | dict[str, Any]], + description: str = "", + tags: list[str] | None = None, + template_id: str | None = None, + save_dir: str | Path | None = None, + ) -> dict[str, Any]: + """Create a new template and optionally save it to disk. + + Parameters + ---------- + name : + Human-readable template name. + tools : + List of tool IDs (str) or git-source dicts. + description : + One-line description. + tags : + Category labels for searchability. + template_id : + Override the auto-derived ID (defaults to slugified name). + save_dir : + Directory to write the JSON file. If ``None`` the + template is only kept in memory. + + Returns + ------- + The created template dict. + """ + tpl: dict[str, Any] = { + "id": template_id or name.lower().replace(" ", "-").replace("_", "-"), + "name": name, + "description": description, + "tags": tags or [], + "version": "1.0", + "author": "user", + "tools": tools, + } + + self._templates[tpl["id"]] = tpl + + if save_dir: + out = Path(save_dir) + out.mkdir(parents=True, exist_ok=True) + (out / f"{tpl['id']}.json").write_text( + json.dumps(tpl, indent=4, ensure_ascii=False), + encoding="utf-8", + ) + + return tpl + + def delete_template(self, template_id: str) -> bool: + """Remove a template (memory only, does not delete files).""" + return self._templates.pop(template_id, None) is not None + + +def _derive_id_from_source(source: str) -> str: + """Derive a tool ID from a git URL. + + Examples + -------- + >>> _derive_id_from_source("https://github.com/user/my-tool") + 'my_tool' + >>> _derive_id_from_source("https://github.com/user/my-tool.git") + 'my_tool' + """ + # Strip trailing .git and get last path segment + url = source.rstrip("/").removesuffix(".git") + slug = url.rsplit("/", 1)[-1].lower() + return slug.replace("-", "_") diff --git a/src/ai_lsc/registry/stack_templates/multi-agent-crewai-local.json b/src/ai_lsc/registry/stack_templates/multi-agent-crewai-local.json new file mode 100644 index 0000000..af0a8c4 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/multi-agent-crewai-local.json @@ -0,0 +1,28 @@ +{ + "id": "multi-agent-crewai-local", + "name": "Multi-Agent CrewAI — Local Team Stack", + "description": "Build AI agent teams that collaborate on complex tasks, all running on local models. CrewAI orchestrates specialized agents (researcher, coder, reviewer) powered by Ollama. The exact stack from 'Building an AI Company with Local Models' YouTube series.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["multi-agent", "crewai", "autogen", "agent-team", "youtube-trending", "local-first", "automation"], + "endpoints": { + "ollama_base": "http://localhost:11434/v1", + "litellm_base": "http://localhost:4000" + }, + "tools": [ + "ollama", + "litellm", + "crewai", + "autogen", + "chromadb", + "fabric", + "n8n" + ], + "notes": { + "youtube_context": "Multi-agent AI teams are the #2 trending AI coding topic. Videos by @aiaborde, @promptengineering, and @johnhampton010 show agents delegating tasks to each other. CrewAI is the most beginner-friendly framework for this — define roles, give them tools, and watch them collaborate.", + "recommended_models": "qwen2.5:32b (agent reasoning), llama3.1:70b (complex tasks), codestral:22b (coding agents), mistral-nemo:12b (lightweight agents), nomic-embed-text (agent memory embeddings)", + "setup": "pip install crewai crewai-tools. Set OPENAI_API_BASE=http://localhost:11434/v1 and OPENAI_API_KEY=ollama. LiteLLM at 4000 normalizes if you mix Ollama with other backends.", + "workflow": "Define a Crew with Agent roles (Researcher, Coder, Reviewer). Each agent gets tools (web search, file read/write, code execution). Ollama serves all LLM calls locally. ChromaDB stores agent memory between sessions. n8n can trigger crews from external events (webhooks, schedules, git pushes).", + "tips": "Use sequential process for step-by-step tasks. Use hierarchical process for complex planning (manager agent delegates). Keep agent backstories short and role-focused — verbose context wastes tokens on local models. Embedding quality matters more than model size for agent memory tasks." + } +} diff --git a/src/ai_lsc/registry/stack_templates/n8n-ai-workflow-automation.json b/src/ai_lsc/registry/stack_templates/n8n-ai-workflow-automation.json new file mode 100644 index 0000000..5e7f558 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/n8n-ai-workflow-automation.json @@ -0,0 +1,30 @@ +{ + "id": "n8n-ai-workflow-automation", + "name": "n8n AI Workflow Automation Hub", + "description": "Visual AI workflow automation with n8n at the center. Connect local Ollama models to webhooks, email, databases, and scheduling. Build AI-powered automations without writing code — the exact setup from the viral 'Automate Everything with Local AI' videos.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["n8n", "workflow", "automation", "no-code", "youtube-trending", "local-first", "integration"], + "endpoints": { + "n8n": "http://localhost:5678", + "ollama_base": "http://localhost:11434/v1", + "redis": "localhost:6379", + "postgresql": "localhost:5432" + }, + "tools": [ + "ollama", + "litellm", + "n8n", + "redis", + "postgresql", + "fabric", + "whisper" + ], + "notes": { + "youtube_context": "n8n + local AI is the most viewed AI automation content on YouTube. Channels like @n8n_io (official), @techwithtim, and @lainzworld show workflows like: auto-summarize emails with local LLM, transcribe meetings with Whisper, classify support tickets with Ollama, and generate reports on schedule.", + "recommended_models": "llama3.1:8b (classification, fast), qwen2.5:14b (summarization), mistral-nemo:12b (general), phi-4:14b (structured output), nomic-embed-text (semantic search)", + "setup": "n8n runs at localhost:5678 with PostgreSQL for persistence and Redis for queue management. Add the Ollama node (built-in) pointing at localhost:11434. LiteLLM at 4000 provides fallback model routing. n8n's AI Agent node chains multiple LLM calls together in a visual flow.", + "workflow": "Trigger (webhook/cron/email) → n8n AI Agent → Ollama (localhost:11434) → process result → action (email/slack/database write). Whisper node for audio. Fabric node for text transforms. Multiple agents can collaborate in a single workflow.", + "tips": "Use n8n's sub-workflow feature to reuse AI processing across multiple automations. Set Ollama keep_alive=5m in n8n config to avoid cold starts between workflow triggers. The AI Agent node's memory feature persists conversation context across workflow runs using Redis." + } +} diff --git a/src/ai_lsc/registry/stack_templates/open-webui-full-rag.json b/src/ai_lsc/registry/stack_templates/open-webui-full-rag.json new file mode 100644 index 0000000..615b0e3 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/open-webui-full-rag.json @@ -0,0 +1,28 @@ +{ + "id": "open-webui-full-rag", + "name": "Open WebUI — Full RAG Knowledge Stack", + "description": "The most popular self-hosted ChatGPT replacement. Open WebUI + Ollama + ChromaDB + Whisper for voice input + Docling for document ingestion. The stack thousands of homelabbers and YouTubers run for private AI chat with full document understanding.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["open-webui", "chatgpt-alternative", "rag", "homelab", "youtube-trending", "document-ai", "local-first"], + "endpoints": { + "ollama_base": "http://localhost:11434", + "openwebui": "http://localhost:3000", + "chromadb": "http://localhost:8000" + }, + "tools": [ + "ollama", + "openwebui", + "chromadb", + "whisper", + "docling", + "markitdown" + ], + "notes": { + "youtube_context": "The #1 homelab AI setup across YouTube. Every self-hosted AI tutorial covers this exact stack. Channels like @techhut, @crosstalksolutions, and @networkchuck have dedicated videos with 500K+ views on this combo.", + "recommended_models": "llama3.1:8b (fast chat), llama3.1:70b (quality), qwen2.5:32b (multilingual), mistral-nemo:12b (lightweight), nomic-embed-text (embeddings)", + "setup": "Open WebUI auto-detects Ollama on localhost:11434. Upload PDFs/docs in the UI — they get chunked and embedded into ChromaDB automatically. Whisper enables the microphone button for voice-to-text input.", + "workflow": "Documents → Docling/MarkItDown → Markdown → Open WebUI RAG pipeline → ChromaDB vector store. Whisper handles voice queries. All inference through Ollama on local GPU.", + "tips": "Set OLLAMA_NUM_PARALLEL=4 for concurrent chat requests. Use Open WebUI's built-in model switching to route simple queries to 8B and complex ones to 70B. Create workspaces per project for isolated document collections." + } +} diff --git a/src/ai_lsc/registry/stack_templates/openhands-autonomous-coder.json b/src/ai_lsc/registry/stack_templates/openhands-autonomous-coder.json new file mode 100644 index 0000000..09c6972 --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/openhands-autonomous-coder.json @@ -0,0 +1,30 @@ +{ + "id": "openhands-autonomous-coder", + "name": "OpenHands — Autonomous AI Software Engineer", + "description": "Run the OpenHands autonomous coding agent entirely locally. Sandboxed code execution + terminal access + file management + web browsing + Ollama inference. The most popular open-source autonomous software engineer on GitHub.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["openhands", "autonomous", "coding-agent", "sandbox", "youtube-trending", "local-first", "terminal"], + "endpoints": { + "ollama_base": "http://localhost:11434/v1", + "litellm_base": "http://localhost:4000", + "openhands": "http://localhost:3000" + }, + "tools": [ + "openhands", + "ollama", + "litellm", + "fabric", + "ripgrep", + "fd", + "tree_sitter" + ], + "notes": { + "youtube_context": "The autonomous coding agent concept went viral when open-source alternatives appeared. OpenHands, maintained by All-Hands-AI, is the most starred and actively developed project in this space. Channels like @NicholasRenotte, @aiaborde, and @codingwithadam have full build-along videos with 200K+ views.", + "about_openhands": "OpenHands is an autonomous AI software engineer that can plan, write, debug, and execute code in sandboxed Docker environments. It has full terminal access, file management, web browsing capability, and supports any LLM backend. GitHub: https://github.com/All-Hands-AI/OpenHands — 40K+ stars.", + "recommended_models": "qwen2.5-coder:32b (primary coding, best SWE-bench), deepseek-coder-v2:236b (complex reasoning), codestral:22b (fast edits), llama3.1:70b (architectural planning), claude-4-sonnet (if available via proxy)", + "setup": "1) OpenHands installs via git clone + pip. 2) Configure LLM backend in config.yaml to point at Ollama (localhost:11434) or LiteLLM (localhost:4000). 3) Start the server: python -m openhands.server. 4) Open the web UI at localhost:3000. 5) Give it a task and watch it plan, code, test, and iterate autonomously.", + "workflow": "User describes task in web UI → OpenHands plans approach → Agent writes code in sandbox → Code executes in Docker container → Agent reads output → Agent iterates until tests pass. Fabric can transform error messages into structured context. ripgrep + fd + tree_sitter give the agent codebase awareness when pointed at a repo.", + "tips": "OpenHands uses Docker sandboxes by default for safe code execution. For local-only setups, configure SANDBOX_TYPE=local in the environment. The coding model matters more than reasoning quality — Qwen2.5-Coder:32b consistently outperforms larger general models on SWE-bench. Use LiteLLM as a middleman if you want to hot-swap models between tasks without restarting OpenHands." + } +} diff --git a/src/ai_lsc/registry/stack_templates/openjarvis-intelligence-stack.json b/src/ai_lsc/registry/stack_templates/openjarvis-intelligence-stack.json new file mode 100644 index 0000000..ed018cf --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/openjarvis-intelligence-stack.json @@ -0,0 +1,71 @@ +{ + "id": "openjarvis-intelligence-stack", + "name": "OpenJarvis — Full Intelligence Stack", + "description": "The everything-intelligent stack. OpenJarvis as the central brain with dual inference engines (vLLM + Ollama), full memory hierarchy (Qdrant, ChromaDB, LanceDB, Redis, MariaDB), all RAG/OCR/document tools, audio I/O (Whisper + LuxTTS + Parakeet), computer vision, knowledge graphs, semantic search, and Obsidian knowledge base. 30+ tools working in concert.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["openjarvis", "intelligence", "multi-modal", "rag", "vision", "audio", "knowledge-graph", "memory", "full-stack", "local-first"], + "endpoints": { + "openjarvis": "http://localhost:17070", + "ollama_base": "http://localhost:11434/v1", + "vllm_base": "http://localhost:8000", + "litellm_base": "http://localhost:4000", + "qdrant": "http://localhost:6333", + "chromadb": "http://localhost:8000", + "lancedb": "http://localhost:8100", + "redis": "localhost:6379", + "mariadb": "localhost:3306", + "elasticsearch": "http://localhost:9200", + "meilisearch": "http://localhost:7700", + "openwebui": "http://localhost:3000" + }, + "tools": [ + "openjarvis", + "ollama", + "vllm", + "litellm", + "qdrant", + "chromadb", + "lancedb", + "redis", + "mariadb", + "turbovec", + "graphrag", + "elasticsearch", + "meilisearch", + "airweave", + "markitdown", + "opendataloader", + "opendataloader_pdf", + "docling", + "whisper", + "luxtts", + "parakeet", + "deep_eye", + "understand_anything", + "fabric", + "openwebui", + "openhands", + "obsidian", + "aider", + "hermes_agent", + "glances", + "langchain" + ], + "notes": { + "architecture": "OpenJarvis sits at L11 (User Interfaces) as the central brain. It orchestrates all layers below: L5/L6 inference engines, L7 data/knowledge pipelines, L8 automation, L10 intelligent routing, and L13 knowledge management. Every tool in this stack feeds into or is controlled by OpenJarvis.", + "inference_tier": "Ollama at 11434 handles lightweight and medium models (8B-32B). vLLM at 8000 serves heavy models (70B+) with PagedAttention for max throughput. LiteLLM at 4000 provides a unified OpenAI-compatible API over both backends — OpenJarvis and all sub-agents route through LiteLLM for seamless model switching.", + "memory_hierarchy": "Five-tier memory system: (1) Redis 6379 = hot cache / pub-sub / session state (ms latency). (2) Qdrant 6333 = semantic vector memory for RAG and agent recall (us). (3) ChromaDB = document chunk embeddings (dedicated RAG pipeline). (4) LanceDB = fast local vector DB for code and small corpus. (5) MariaDB 3306 = persistent structured storage (audit logs, user prefs, conversation history, task state). TurboVec provides accelerated embedding generation across all vector stores.", + "rag_document_pipeline": "Documents enter through four ingestion paths: MarkItDown converts Office docs to Markdown. OpenDataLoader handles web scraping and structured data. Docling performs deep PDF extraction with layout analysis. OpenDataLoader PDF specializes in scanned/image PDFs. All output flows to Fabric for text transformation, then into vector stores via TurboVec embeddings.", + "audio_i_o": "Whisper (OpenAI) provides speech-to-text for voice commands and meeting transcription. LuxTTS generates natural speech output for responses and notifications. Parakeet is a lightweight alternative TTS for quick alerts. Together they give OpenJarvis full voice I/O capability.", + "vision": "Deep Eye provides computer vision — image description, object detection, scene understanding. Understand Anything handles universal document understanding (charts, diagrams, mixed content). These feed into the RAG pipeline so OpenJarvis can reason about visual content.", + "knowledge_graph_search": "GraphRag builds knowledge graphs from document collections — entities, relationships, community detection. Elasticsearch at 9200 provides full-text search with BM25 ranking. Meilisearch at 7700 provides typo-tolerant instant search. Airweave syncs data across all stores in real-time.", + "knowledge_management": "Obsidian serves as the human-facing knowledge base — markdown notes, bi-directional links, graph view. OpenJarvis can read/write to the Obsidian vault, making the LLM's knowledge graph accessible to humans through a familiar note-taking interface. Logseq and Joplin are alternative knowledge tools in the stack.", + "coding_agents": "OpenHands provides autonomous software engineering. Aider handles interactive pair programming. Hermes Agent runs persistent background agent tasks. All three route through the same LiteLLM/Ollama inference path.", + "monitoring": "Glances provides real-time system resource monitoring. OpenJarvis dashboard exposes all service health, log aggregation, and resource metrics in one view.", + "recommended_models": "Primary reasoning: qwen2.5:72b or llama3.1:70b (via vLLM). Fast tasks: qwen2.5:14b, mistral-nemo:12b (via Ollama). Coding: qwen2.5-coder:32b. Embeddings: nomic-embed-text (fast), bge-large (quality). Vision: llava:13b. Audio: whisper-large-v3.", + "setup": "Start services in order: (1) Redis, MariaDB, Elasticsearch (infrastructure). (2) Qdrant, ChromaDB, LanceDB, Meilisearch (memory/search). (3) Ollama, then vLLM for heavy models. (4) LiteLLM pointing at both backends. (5) TurboVec for embedding acceleration. (6) Document tools (Docling, MarkItDown). (7) Audio tools (Whisper, LuxTTS). (8) OpenJarvis as the central brain. (9) Agent tools (OpenHands, Aider, Hermes Agent). (10) Obsidian for knowledge base. AI-LSC manages all of this through the stack template.", + "resource_requirements": "Minimum: 32GB RAM, 12GB VRAM (6B models). Recommended: 64GB RAM, 24GB VRAM (32B models). Full stack: 128GB RAM, 2x 24GB VRAM (70B models + vLLM + embedding). MariaDB needs 4GB. Elasticsearch needs 4GB. Redis needs 2GB. Plan 16GB+ RAM just for infrastructure services.", + "tips": "Don't start everything at once — use AI-LSC's service manager to bring up tiers incrementally. The inference tier (Ollama + vLLM + LiteLLM) is the foundation. Memory services (Redis + Qdrant + MariaDB) come next. Then document/audio tools. OpenJarvis last. Use the LiteLLM model list to hot-swap models per task without restarting downstream tools." + } +} diff --git a/src/ai_lsc/registry/stack_templates/privacy-first-ai-laptop.json b/src/ai_lsc/registry/stack_templates/privacy-first-ai-laptop.json new file mode 100644 index 0000000..14caf4e --- /dev/null +++ b/src/ai_lsc/registry/stack_templates/privacy-first-ai-laptop.json @@ -0,0 +1,30 @@ +{ + "id": "privacy-first-ai-laptop", + "name": "Privacy-First AI Laptop Setup", + "description": "The complete privacy-respecting AI stack for your laptop. All processing on-device, no telemetry, no cloud APIs. Ollama + Whisper + Obsidian + Paperless-NGX + local search. Popular with privacy-focused YouTubers and FOSS advocates.", + "version": "1.0", + "author": "ai-lsc", + "tags": ["privacy", "offline", "laptop", "document-management", "youtube-trending", "local-first", "foss"], + "endpoints": { + "ollama_base": "http://localhost:11434", + "openwebui": "http://localhost:3000", + "paperlessngx": "http://localhost:8000" + }, + "tools": [ + "ollama", + "openwebui", + "whisper", + "docling", + "markitdown", + "obsidian", + "paperlessngx", + "fabric" + ], + "notes": { + "youtube_context": "Privacy-focused AI content has exploded. Channels like @TheLinuxExperiment, @crosstalksolutions, and @braveouterweb showcase fully local AI setups. The message: 'Your AI should stay on your machine.' This template builds that exact vision.", + "recommended_models": "llama3.1:8b (daily driver, 4GB VRAM), phi-4:14b (quality on 8GB), mistral-nemo:12b (sweet spot), gemma2:9b (fast), nomic-embed-text (document embeddings)", + "setup": "Ollama runs as a systemd service. Open WebUI provides the chat frontend. Paperless-NGX ingests scanned documents. Docling/MarkItDown converts them for RAG. Whisper handles voice memos. Obsidian links everything with local markdown notes.", + "workflow": "Paper documents → scan → Paperless-NGX (OCR + tagging) → Docling (extract text) → Open WebUI RAG (chat with your documents). Voice notes → Whisper → text → Fabric → summarized notes → Obsidian vault. All data stays on your NVMe.", + "tips": "For laptops with <8GB VRAM, use 4-bit quantized models. Set OLLAMA_NUM_PARALLEL=1 to prevent VRAM thrashing. Paperless-NGX works great with 2GB RAM allocated. Use Obsidian's local graph view to visualize connections between your AI-generated notes and source documents." + } +} diff --git a/src/ai_lsc/registry/validator.py b/src/ai_lsc/registry/validator.py new file mode 100644 index 0000000..888f4eb --- /dev/null +++ b/src/ai_lsc/registry/validator.py @@ -0,0 +1,147 @@ +""" +AI-LSC — Registry schema validation. + +Validates that registry entries conform to the expected schema. This is +intended for CI / developer tooling, not for hot-path runtime checks +(so a small upfront cost is acceptable). + +Usage:: + + from ai_lsc.registry.validator import validate_registry + + errors = validate_registry(registry_data) + if errors: + for e in errors: + print(f" - {e}") +""" + +from __future__ import annotations + +from typing import Any + +# Fields that every registry entry must contain. +_REQUIRED_FIELDS: set[str] = { + "name", "level", "layer", "role", "category", + "installer", "launcher", "deps", "description", "flags", +} + +# Valid values for certain fields — must match InstallerType / LauncherType enums. +_VALID_INSTALLER_TYPES: set[str] = { + "ollama", "uv", "pipx", "pip", "npm", + "git", "git_node", "pacman", "dnf", "apt", + "script", "custom", +} +_VALID_LAUNCHER_TYPES: set[str] = { + "systemd", "tmux", "desktop", "lxc", +} + +# Optional installer fields (allowed but not required). +_OPTIONAL_INSTALLER_FIELDS: set[str] = { + "type", "pkg", "cmd", "post_install", "update_cmd", "env_overrides", +} +_OPTIONAL_LAUNCHER_FIELDS: set[str] = { + "type", "cmd", "default_port", +} +_OPTIONAL_FILESYSTEM_FIELDS: set[str] = { + "install", "config", "cache", "data", "logs", "runtime", "models", +} + + +def _check_entry(tool_id: str, entry: dict[str, Any]) -> list[str]: + """Return a list of validation error strings for a single entry.""" + errors: list[str] = [] + + # Missing required fields + missing = _REQUIRED_FIELDS - entry.keys() + if missing: + errors.append(f"{tool_id}: missing fields {sorted(missing)}") + + # Level must be 1–13 + level = entry.get("level") + if isinstance(level, int) and not (1 <= level <= 13): + errors.append(f"{tool_id}: level {level} out of range 1-13") + elif not isinstance(level, int): + errors.append(f"{tool_id}: level is not an int ({level!r})") + + # Installer type + inst = entry.get("installer", {}) + if isinstance(inst, dict): + itype = inst.get("type") + if itype and itype not in _VALID_INSTALLER_TYPES: + errors.append( + f"{tool_id}: unknown installer type {itype!r} " + f"(valid: {sorted(_VALID_INSTALLER_TYPES)})" + ) + # Script-type installers must include cmd + if itype == "script" and not inst.get("cmd"): + errors.append( + f"{tool_id}: installer type 'script' requires 'cmd'" + ) + # Warn if script cmd doesn't contain {tools_root} + if itype == "script" and inst.get("cmd"): + cmd_str = inst["cmd"] + if "{tools_root}" not in cmd_str and tool_id != "ollama": + errors.append( + f"{tool_id}: script installer cmd should reference " + f"{{{{tools_root}}}} to avoid polluting system dirs" + ) + + # Launcher type + launch = entry.get("launcher", {}) + if isinstance(launch, dict): + ltype = launch.get("type") + if ltype and ltype not in _VALID_LAUNCHER_TYPES: + errors.append( + f"{tool_id}: unknown launcher type {ltype!r} " + f"(valid: {sorted(_VALID_LAUNCHER_TYPES)})" + ) + + # Filesystem spec (optional but validated if present) + fs = entry.get("filesystem", {}) + if isinstance(fs, dict): + unknown_fs = set(fs.keys()) - _OPTIONAL_FILESYSTEM_FIELDS + if unknown_fs: + errors.append( + f"{tool_id}: unknown filesystem fields {sorted(unknown_fs)}" + ) + + # deps must be a list of strings + deps = entry.get("deps") + if not isinstance(deps, list): + errors.append(f"{tool_id}: deps is not a list") + else: + non_str = [d for d in deps if not isinstance(d, str)] + if non_str: + errors.append( + f"{tool_id}: deps contains non-string items: {non_str}" + ) + + # flags must be a dict of bools + flags = entry.get("flags", {}) + if not isinstance(flags, dict): + errors.append(f"{tool_id}: flags is not a dict") + else: + non_bool = {k: v for k, v in flags.items() + if not isinstance(v, bool)} + if non_bool: + errors.append( + f"{tool_id}: flags contain non-bool values: " + f"{list(non_bool.keys())}" + ) + + return errors + + +def validate_registry(data: dict[str, Any]) -> list[str]: + """Validate an entire registry dict. + + Returns a (possibly empty) list of human-readable error strings. + An empty list means the registry is valid. + """ + errors: list[str] = [] + for tool_id, entry in data.items(): + if not isinstance(entry, dict): + errors.append(f"{tool_id}: entry is not a dict ({type(entry)})") + continue + errors.extend(_check_entry(tool_id, entry)) + return errors diff --git a/src/ai_lsc/runtime/__init__.py b/src/ai_lsc/runtime/__init__.py new file mode 100644 index 0000000..b3f4fd8 --- /dev/null +++ b/src/ai_lsc/runtime/__init__.py @@ -0,0 +1,20 @@ +"""AI-LSC runtime sub-package. + +Process management abstraction layer. All subprocess / psutil calls +live here so that UI code never touches the OS directly. + +UI code calls :class:`RuntimeExecutor`, which delegates to backend- +specific managers (tmux, systemd, process, installer). +""" + +from ai_lsc.runtime.executor import RuntimeExecutor +from ai_lsc.runtime.installer import InstallerManager +from ai_lsc.runtime.lxc import LxcManager +from ai_lsc.runtime.status import StatusChecker + +__all__ = [ + "RuntimeExecutor", + "InstallerManager", + "LxcManager", + "StatusChecker", +] diff --git a/src/ai_lsc/runtime/executor.py b/src/ai_lsc/runtime/executor.py new file mode 100644 index 0000000..c2bdf5d --- /dev/null +++ b/src/ai_lsc/runtime/executor.py @@ -0,0 +1,300 @@ +"""Runtime executor -- the single entry point for all process management. + +UI code calls ``RuntimeExecutor`` methods instead of touching +``subprocess`` directly. This is the *only* class the UI should +import from ``ai_lsc.runtime``. +""" + +from __future__ import annotations + +import subprocess +from pathlib import Path +from typing import Any + +from ai_lsc.runtime.installer import InstallerManager +from ai_lsc.runtime.lxc import LxcManager +from ai_lsc.runtime.process import ProcessManager +from ai_lsc.runtime.status import StatusChecker +from ai_lsc.runtime.systemd import SystemdManager +from ai_lsc.runtime.tmux import TmuxManager +from ai_lsc.utils.process import enriched_env + + +class RuntimeExecutor: + """Unified runtime facade for UI-layer delegation. + + Parameters + ---------- + tools_root: + Base directory for tool installations. + models_root: + Base directory for model files. + workspaces_root: + Base directory for workspace data. + logs_root: + Base directory for service log files. + base_bin_dir: + Colon-separated PATH string to prepend to all commands. + dtach_bin: + Path to the ``dtach`` binary (or ``None``). + """ + + def __init__( + self, + tools_root: str, + models_root: str, + workspaces_root: str, + logs_root: str, + base_bin_dir: str = "", + dtach_bin: str | None = None, + ) -> None: + self.tools_root = tools_root + self.models_root = models_root + self.workspaces_root = workspaces_root + self.logs_root = logs_root + self.base_bin_dir = base_bin_dir + self.dtach_bin = dtach_bin + + self._tmux = TmuxManager() + self._systemd = SystemdManager() + self._lxc = LxcManager(tools_root, logs_root) + self._process = ProcessManager() + self._installer = InstallerManager(tools_root, base_bin_dir) + self._status = StatusChecker() + + # -- context formatting ----------------------------------------------- + + def format_context( + self, + port: str = "", + model_arg: str = "", + ) -> dict[str, str]: + """Build the ``{placeholders}`` dict used by launcher commands.""" + from ai_lsc.constants import BASE_DIR + return { + "base_dir": BASE_DIR, + "tools_root": self.tools_root, + "models_root": self.models_root, + "workspaces_root": self.workspaces_root, + "port": port, + "model_arg": model_arg, + } + + # -- service lifecycle ----------------------------------------------- + + def start_service( + self, + tool_id: str, + launcher_cmd: str, + launcher_type: str, + port: str = "", + model_arg: str = "", + ) -> str: + """Start a service via the appropriate backend. + + Returns a description of what was done. + """ + ctx = self.format_context(port=port, model_arg=model_arg) + final_cmd = launcher_cmd.format(**ctx) + + if launcher_type == "systemd": + self._systemd.start(final_cmd) + return f"Systemd activated for {tool_id}" + + if launcher_type == "desktop": + self._process.launch_desktop(final_cmd) + return f"Desktop spawned for {tool_id}" + + if launcher_type == "lxc": + log_file = str(Path(self.logs_root) / f"{tool_id}.log") + return self._lxc.launch_service( + tool_id=tool_id, + command=final_cmd, + log_file=log_file, + dtach_bin=self.dtach_bin, + base_bin_dir=self.base_bin_dir, + ) + + # default: tmux (with optional dtach) + log_file = str(Path(self.logs_root) / f"{tool_id}.log") + self._tmux.launch_service( + tool_id=tool_id, + command=final_cmd, + log_file=log_file, + dtach_bin=self.dtach_bin, + base_bin_dir=self.base_bin_dir, + ) + return f"Component {tool_id} isolated in Tmux." + + def stop_service( + self, + tool_id: str, + launcher_type: str, + launcher_cmd: str = "", + search_term: str = "", + is_docker: bool = False, + ) -> str: + """Stop a service via the appropriate backend. + + Returns a description of what was done. + """ + if launcher_type == "systemd": + self._systemd.stop(launcher_cmd) + return f"Systemd stop signal sent for {tool_id}" + + if launcher_type == "tmux": + self._tmux.stop_service(tool_id) + return f"Tmux window killed for {tool_id}" + + if launcher_type == "lxc": + return self._lxc.stop_service(tool_id) + + # default: pkill + self._process.kill_by_name(search_term) + + if is_docker: + # Derive compose path from tool_id (tool-specific docker dir) + compose_path = ( + f"{self.tools_root}/{tool_id}/docker/docker-compose.yaml" + ) + self._process.docker_compose_down(compose_path) + + return f"Termination signal sent to {tool_id}." + + def is_service_running( + self, + launcher_type: str, + tool_id: str = "", + service_cmd: str = "", + search_term: str = "", + ) -> bool: + """Check whether a service is currently live.""" + if launcher_type == "lxc": + return self._lxc.is_running(f"ai-lsc-{tool_id}") + return self._status.is_running( + launcher_type=launcher_type, + tool_id=tool_id, + service_cmd=service_cmd, + search_term=search_term, + ) + + # -- installation ---------------------------------------------------- + + def install_tool( + self, + inst_type: str, + pkg: str, + cmd: str = "", + tool_id: str = "", + ctx: dict[str, str] | None = None, + force: bool = False, + post_install: str | None = None, + env_overrides: dict[str, str] | None = None, + filesystem: dict[str, str] | None = None, + ) -> str: + """Dispatch tool installation to the correct installer. + + If *tool_id* is provided, the installer uses preflight detection + and routes artifacts to ``tools_root//``. + If *force* is True, skips preflight and installs unconditionally. + + *post_install* runs a shell command inside ``tools_root/`` + after clone (e.g. ``pip install -r requirements.txt``, ``make``). + + *env_overrides* remaps upstream environment variables (HF_HOME, + TRANSFORMERS_CACHE, etc.) into ``/mnt/AI/`` paths. + + *filesystem* declares per-tool path mappings for the verification + checklist (install, config, cache, logs). + + Returns a description of the result. + """ + if tool_id: + return self._installer.install_with_preflight( + tool_id=tool_id, + inst_type=inst_type, + pkg=pkg, + cmd=cmd, + ctx=ctx, + force=force, + post_install=post_install, + env_overrides=env_overrides, + ) + return self._installer.run( + inst_type=inst_type, + pkg=pkg, + cmd=cmd, + ctx=ctx, + tool_id=tool_id, + post_install=post_install, + env_overrides=env_overrides, + ) + + # -- verification --------------------------------------------------- + + def verify_tool( + self, + tool_id: str, + inst_type: str, + pkg: str, + cmd: str = "", + filesystem: dict[str, str] | None = None, + ) -> dict[str, Any]: + """Run the installation compliance checklist for a tool. + + Returns a dict with ``score``, ``checks``, and ``install_location``. + """ + return self._installer.verify( + tool_id=tool_id, + inst_type=inst_type, + pkg=pkg, + cmd=cmd, + filesystem=filesystem, + ) + + # -- model management ------------------------------------------------ + + def pull_model(self, model_name: str) -> subprocess.Popen: + """Start an ``ollama pull`` and return the live process.""" + from ai_lsc.utils.ollama import ollama_env + env = enriched_env(self.base_bin_dir) + ollama_env_overrides = ollama_env(self.models_root) + env.update(ollama_env_overrides) + return subprocess.Popen( + ["ollama", "pull", model_name], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + env=env, + ) + + # -- CLI launch ------------------------------------------------------- + + def launch_cli( + self, + tool_id: str, + launcher_type: str, + ) -> str: + """Open a terminal for the tool's CLI interface.""" + cmd = "" + if launcher_type == "tmux": + cmd = self._tmux.attach_cli(tool_id) + elif launcher_type == "lxc": + return self._lxc.launch_cli(f"ai-lsc-{tool_id}") + env = enriched_env(self.base_bin_dir) + from ai_lsc.constants import BASE_DIR + self._process.launch_terminal( + f"{cmd}cd {BASE_DIR} && echo 'Spawning CLI...' && exec bash", + env=env, + ) + return f"Spawned CLI terminal for {tool_id}" + + # -- web launch ------------------------------------------------------- + + @staticmethod + def open_web_url(port: str) -> str: + """Open a browser tab for the given port. Returns the URL.""" + import webbrowser + url = f"http://127.0.0.1:{port}" + webbrowser.open(url) + return url diff --git a/src/ai_lsc/runtime/installer.py b/src/ai_lsc/runtime/installer.py new file mode 100644 index 0000000..aaba2ba --- /dev/null +++ b/src/ai_lsc/runtime/installer.py @@ -0,0 +1,807 @@ +"""Installer manager -- dispatch-table-driven tool installation. + +Handles pacman, dnf, apt, uv, pipx, pip, ollama, npm, git, git_node, +script, and custom installer types. Every ``subprocess`` / ``os.makedirs`` +call is confined here. + +Key capabilities +--------------- +1. **Step-down containment**: Each Python tool tries the most isolated + install method first (ollama -> uv -> pipx -> pip). If the preferred + method fails, it steps down to the next one automatically. + +2. **Working directory enforcement**: All tool artifacts are installed + under ``tools_root//`` (or ``tools_root/npm_globals/`` for + npm). This keeps the host system clean and makes tools portable. + +3. **``~/.local`` remap**: Environment variables are set so that + ``uv``, ``pip``, and ``pipx`` install into ``tools_root`` instead + of the user's home directory. + +4. **Per-tool env overrides**: Tools like vLLM, huggingface tools, etc. + can declare ``env_overrides`` in the registry to redirect + HF_HOME, TRANSFORMERS_CACHE, and other upstream paths into + ``/mnt/AI/cache/`` or ``/mnt/AI/data/``. + +5. **Post-install hooks**: Git-cloned tools can declare ``post_install`` + commands (e.g. ``pip install -r requirements.txt``, ``make``) + that run automatically after clone. + +6. **Preflight detection**: ``preflight()`` checks whether a tool is + already installed (via ``which``, directory existence, or pacman + query) and returns a ``PreflightResult`` so the UI can offer + "update to latest" instead of blindly reinstalling. + +7. **Installation verification**: ``verify()`` runs a compliance + checklist against a single tool and returns a ``VerificationResult`` + with a quality score (0-100%). + +8. **Version detection**: Attempts to extract the installed version + for comparison with the latest available version. +""" + +from __future__ import annotations + +import os +import shutil +import subprocess +from pathlib import Path +from typing import Any + +from ai_lsc.utils.logging import get_logger +from ai_lsc.utils.process import enriched_env + +logger = get_logger(__name__) + +# Step-down containment order (most isolated first) +STEP_DOWN_ORDER: list[str] = [ + "ollama", "uv", "pipx", "pip", + "git", "git_node", "npm", "pacman", "dnf", "apt", "script", "custom", +] + +# Version extraction commands per installer type +_VERSION_CMDS: dict[str, str] = { + "pacman": "pacman -Qi {pkg} 2>/dev/null | grep Version", + "dnf": "dnf info {pkg} 2>/dev/null | grep Version", + "apt": "dpkg -s {pkg} 2>/dev/null | grep Version", + "uv": "{cmd} --version 2>/dev/null", + "npm": "npm list -g {pkg} --depth=0 2>/dev/null", + "pip": "pip show {pkg} 2>/dev/null | grep Version", + "pipx": "pipx list 2>/dev/null | grep {pkg}", +} + +# Known upstream env vars that tools commonly use for data/cache. +# Format: env_var -> (human_label, default_subdir_under_base) +_UPSTREAM_ENV_VARS: dict[str, tuple[str, str]] = { + "HF_HOME": ("HuggingFace cache", "cache/huggingface"), + "TRANSFORMERS_CACHE": ("Transformers cache", "cache/huggingface"), + "DIFFUSERS_CACHE": ("Diffusers cache", "cache/huggingface"), + "RUST_BACKTRACE": ("Rust backtrace", None), + "NODE_PATH": ("Node modules", None), + "npm_config_prefix": ("npm prefix", None), +} + + +class InstallerManager: + """Install or sync tools via the appropriate package manager. + + Parameters + ---------- + tools_root : + Base directory for tool installations (default ``/mnt/AI/tools``). + base_dir : + Top-level AI-LSC directory (``/mnt/AI``). Used to expand + per-tool filesystem paths. + base_bin_dir : + Colon-separated PATH string to prepend to all commands. + """ + + def __init__( + self, + tools_root: str, + base_dir: str = "", + base_bin_dir: str = "", + ) -> None: + from ai_lsc.constants import BASE_DIR + self.tools_root = tools_root + self.base_dir = base_dir or BASE_DIR + self.base_bin_dir = base_bin_dir + + # ── Environment construction ───────────────────────────────────── + + def _env( + self, + tool_id: str = "", + env_overrides: dict[str, str] | None = None, + ) -> dict[str, str]: + """Build an enriched environment with ``~/.local`` remapped. + + For Python tools, we redirect uv/pip/pipx directories into + ``tools_root`` so that artifacts do not leak into the user's + home directory. Per-tool ``env_overrides`` (from the registry) + are applied last so they take precedence. + """ + env = enriched_env(self.base_bin_dir) + + # ── Global XDG remap: ~/.local -> tools_root/.local ──────────── + env["LOCAL_BIN"] = os.path.join(self.tools_root, ".local", "bin") + env["XDG_DATA_HOME"] = os.path.join(self.tools_root, ".local", "share") + env["XDG_CONFIG_HOME"] = os.path.join(self.tools_root, ".local", "config") + env["XDG_CACHE_HOME"] = os.path.join(self.tools_root, ".local", "cache") + + # ── uv-specific: force tool installs into tools_root ─────────── + if tool_id: + uv_tool_dir = os.path.join(self.tools_root, tool_id, ".uv", "tools") + uv_bin_dir = os.path.join(self.tools_root, tool_id, ".uv", "bin") + else: + uv_tool_dir = os.path.join(self.tools_root, ".uv", "tools") + uv_bin_dir = os.path.join(self.tools_root, ".uv", "bin") + env["UV_TOOL_DIR"] = uv_tool_dir + env["UV_TOOL_BIN_DIR"] = uv_bin_dir + env["UV_CACHE_DIR"] = os.path.join(self.tools_root, ".uv", "cache") + + # ── pipx-specific: force installs into tools_root ──────────────── + if tool_id: + env["PIPX_BIN_DIR"] = os.path.join( + self.tools_root, tool_id, ".pipx", "bin", + ) + env["PIPX_HOME"] = os.path.join( + self.tools_root, tool_id, ".pipx", + ) + else: + env["PIPX_BIN_DIR"] = os.path.join(self.tools_root, ".pipx", "bin") + env["PIPX_HOME"] = os.path.join(self.tools_root, ".pipx") + + # ── Per-tool env overrides from registry ──────────────────────── + # Keys may contain {tools_root}, {base_dir} placeholders. + if env_overrides: + for key, raw_val in env_overrides.items(): + expanded = raw_val.replace( + "{tools_root}", self.tools_root, + ).replace( + "{base_dir}", self.base_dir, + ) + env[key] = expanded + logger.debug( + "env override: %s=%s (tool %s)", key, expanded, tool_id, + ) + + # ── Prepend managed bin dirs to PATH ─────────────────────────── + managed_bins = [ + env.get("PIPX_BIN_DIR", ""), + env.get("UV_TOOL_BIN_DIR", ""), + os.path.join(self.tools_root, "bin"), + os.path.join(self.tools_root, ".local", "bin"), + ] + extra = ":".join(d for d in managed_bins if d) + env["PATH"] = f"{extra}:{env.get('PATH', '')}" + return env + + # ── Preflight detection ───────────────────────────────────────── + + def preflight( + self, + tool_id: str, + inst_type: str, + pkg: str, + cmd: str = "", + ) -> dict[str, Any]: + """Check whether a tool is already installed before installing. + + Returns a dict matching ``PreflightResult`` fields. + """ + result: dict[str, Any] = { + "tool_id": tool_id, + "found": False, + "install_type": inst_type, + "location": "", + "version": "", + "is_update_available": False, + "suggested_action": "install", + } + + location, version = self._detect_installation( + tool_id, inst_type, pkg, cmd, + ) + if location: + result["found"] = True + result["location"] = location + result["version"] = version or "" + result["suggested_action"] = "update" + + return result + + def _detect_installation( + self, + tool_id: str, + inst_type: str, + pkg: str, + cmd: str = "", + ) -> tuple[str, str]: + """Detect existing installation. Returns (location, version).""" + + # 1. Check tools_root/ directory existence + tool_dir = os.path.join(self.tools_root, tool_id) + if os.path.isdir(tool_dir): + ver = self._detect_version(inst_type, pkg, cmd, tool_dir) + return tool_dir, ver + + # 2. Check tools_root/.pipx, tools_root/.uv, tools_root/.local + for subdir in [".pipx", ".uv", ".local"]: + check = os.path.join(self.tools_root, subdir, "bin", pkg) + if os.path.exists(check): + return os.path.dirname(check), "" + + # 3. Check tools_root/bin + bin_check = os.path.join(self.tools_root, "bin", pkg) + if os.path.exists(bin_check): + return os.path.dirname(bin_check), "" + + # 4. Check system PATH via shutil.which + binary_name = self._binary_name(pkg, inst_type) + system_path = shutil.which(binary_name) + if system_path: + ver = self._detect_version(inst_type, pkg, cmd) + return system_path, ver + + # 5. OS package manager query (pacman / dnf / apt) + for pkg_mgr, query_cmd in [ + ("pacman", f"pacman -Qi {pkg} 2>/dev/null | grep Version"), + ("dnf", f"dnf info {pkg} 2>/dev/null | grep Version"), + ("apt", f"dpkg -s {pkg} 2>/dev/null | grep Version"), + ]: + if inst_type == pkg_mgr: + try: + proc = subprocess.run( + query_cmd, + shell=True, capture_output=True, text=True, timeout=10, + ) + if proc.returncode == 0 and proc.stdout.strip(): + ver_line = proc.stdout.strip() + ver = ( + ver_line.split(":")[-1].strip() + if ":" in ver_line else ver_line + ) + return f"{pkg_mgr}:{pkg}", ver + except Exception: + pass + + return "", "" + + def _binary_name(self, pkg: str, inst_type: str) -> str: + """Map a package name to its likely binary name.""" + if inst_type == "npm": + return pkg if "/" not in pkg else pkg.split("/")[-1] + if inst_type in ("uv", "pip"): + return pkg.replace("-", "_").replace(".", "_") + return pkg + + def _detect_version( + self, + inst_type: str, + pkg: str, + cmd: str, + cwd: str = "", + ) -> str: + """Try to extract the installed version.""" + if inst_type == "git": + git_dir = os.path.join(self.tools_root, pkg.split("/")[-1] + .replace(".git", "")) + if os.path.isdir(os.path.join(git_dir, ".git")): + try: + proc = subprocess.run( + ("git describe --tags --abbrev=0 2>/dev/null " + "|| git rev-parse --short HEAD"), + shell=True, capture_output=True, text=True, + timeout=10, cwd=git_dir, + ) + if proc.returncode == 0: + return proc.stdout.strip() + except Exception: + pass + return "" + + # Try the launcher command for version + ver_cmd = f"{cmd} --version" if cmd else "" + if not ver_cmd: + tmpl = _VERSION_CMDS.get(inst_type, "") + if tmpl: + ver_cmd = tmpl.format(pkg=pkg, cmd=pkg) + + if not ver_cmd: + return "" + + try: + proc = subprocess.run( + f"{ver_cmd} 2>/dev/null", + shell=True, capture_output=True, text=True, + timeout=10, cwd=cwd or None, + ) + if proc.returncode == 0: + return proc.stdout.strip().split("\n")[0] + except Exception: + pass + return "" + + # ── Post-install hooks ────────────────────────────────────────── + + def _run_post_install( + self, + tool_id: str, + post_install_cmd: str, + ) -> str: + """Run a post-install hook inside ``tools_root/``.""" + if not post_install_cmd: + return "" + dest = os.path.join(self.tools_root, tool_id) + env = self._env(tool_id) + # Replace {tools_root} in the command + cmd = post_install_cmd.replace("{tools_root}", self.tools_root) + logger.info("Running post-install for %s: %s", tool_id, cmd) + try: + subprocess.run( + cmd, shell=True, check=True, env=env, + timeout=300, cwd=dest, + ) + return f"Post-install completed for {tool_id}." + except subprocess.CalledProcessError as exc: + logger.warning( + "Post-install failed for %s: %s", tool_id, exc, + ) + return f"Post-install FAILED for {tool_id}: {exc}" + + # ── Strategy methods ──────────────────────────────────────────── + + def install_ollama(self, pkg: str, tool_id: str) -> str: + """Pull an Ollama model or install the ollama binary.""" + if tool_id == "ollama": + dest = os.path.join(self.tools_root, "ollama") + os.makedirs(dest, exist_ok=True) + subprocess.run( + "curl -fsSL https://ollama.com/install.sh | sh", + shell=True, check=True, env=self._env("ollama"), + ) + return "Ollama binary installed to system (managed by ollama)." + return f"Ollama model '{pkg}' queued for pull." + + def install_uv(self, pkg: str, tool_id: str, + env_overrides: dict[str, str] | None = None) -> str: + """Install a Python tool via ``uv tool install`` pinned to tools_root.""" + dest = os.path.join(self.tools_root, tool_id) + os.makedirs(dest, exist_ok=True) + env = self._env(tool_id, env_overrides) + try: + subprocess.run( + f"uv tool install {pkg}", + shell=True, check=True, env=env, timeout=300, + ) + return f"UV tool '{pkg}' installed to {env['UV_TOOL_DIR']}." + except subprocess.CalledProcessError: + logger.info("uv install failed for %s, stepping down to pipx", pkg) + return self.install_pipx(pkg, tool_id, env_overrides) + + def install_pipx(self, pkg: str, tool_id: str, + env_overrides: dict[str, str] | None = None) -> str: + """Install a Python CLI tool via ``pipx`` pinned to tools_root.""" + dest = os.path.join(self.tools_root, tool_id) + os.makedirs(dest, exist_ok=True) + env = self._env(tool_id, env_overrides) + try: + subprocess.run( + f"pipx install {pkg}", + shell=True, check=True, env=env, timeout=300, + ) + return f"pipx '{pkg}' installed to {env['PIPX_HOME']}." + except subprocess.CalledProcessError: + logger.info("pipx install failed for %s, stepping down to pip", pkg) + return self.install_pip(pkg, tool_id, env_overrides) + + def install_pip(self, pkg: str, tool_id: str, + env_overrides: dict[str, str] | None = None) -> str: + """Install a Python tool via ``pip`` into a per-tool venv.""" + dest = os.path.join(self.tools_root, tool_id) + venv_dir = os.path.join(dest, ".venv") + os.makedirs(dest, exist_ok=True) + env = self._env(tool_id, env_overrides) + if not os.path.isdir(venv_dir): + subprocess.run( + f"python3 -m venv {venv_dir}", + shell=True, check=True, env=env, timeout=60, + ) + pip_bin = os.path.join(venv_dir, "bin", "pip") + subprocess.run( + f"{pip_bin} install {pkg}", + shell=True, check=True, env=env, timeout=300, + ) + self._symlink_venv_bin(tool_id, venv_dir, pkg) + return f"pip '{pkg}' installed to {venv_dir}." + + def _symlink_venv_bin( + self, tool_id: str, venv_dir: str, pkg: str, + ) -> None: + """Create symlinks from the venv bin to tools_root/bin.""" + bin_dir = os.path.join(self.tools_root, "bin") + os.makedirs(bin_dir, exist_ok=True) + venv_bin = os.path.join(venv_dir, "bin") + if os.path.isdir(venv_bin): + for entry in os.listdir(venv_bin): + src = os.path.join(venv_bin, entry) + dst = os.path.join(bin_dir, entry) + if os.path.isfile(src) and not os.path.exists(dst): + os.symlink(src, dst) + + def install_pacman(self, pkg: str) -> str: + """Open a terminal for ``pacman -S`` (Arch system package).""" + subprocess.Popen( + f"x-terminal-emulator -e bash -c " + f"'sudo pacman -S --noconfirm {pkg}; sleep 2'", + shell=True, + ) + return f"Dispatched pacman for {pkg}." + + def install_dnf(self, pkg: str) -> str: + """Open a terminal for ``dnf install`` (Fedora / RHEL).""" + subprocess.Popen( + f"x-terminal-emulator -e bash -c " + f"'sudo dnf install -y {pkg}; sleep 2'", + shell=True, + ) + return f"Dispatched dnf for {pkg}." + + def install_apt(self, pkg: str) -> str: + """Open a terminal for ``apt install`` (Debian / Ubuntu).""" + subprocess.Popen( + f"x-terminal-emulator -e bash -c " + f"'sudo apt-get install -y {pkg}; sleep 2'", + shell=True, + ) + return f"Dispatched apt for {pkg}." + + def install_npm(self, pkg: str, tool_id: str, + env_overrides: dict[str, str] | None = None) -> str: + """Install an npm package to an isolated prefix under tools_root.""" + dest = os.path.join(self.tools_root, tool_id) + os.makedirs(dest, exist_ok=True) + env = self._env(tool_id, env_overrides) + subprocess.run( + f"npm install --prefix {dest} {pkg}", + shell=True, check=True, env=env, timeout=300, + ) + return f"NPM '{pkg}' installed to {dest}." + + def install_git( + self, + pkg: str, + tool_id: str, + post_install: str | None = None, + env_overrides: dict[str, str] | None = None, + ) -> str: + """Clone a git repository into ``tools_root/``.""" + dest = os.path.join(self.tools_root, tool_id) + if os.path.exists(dest): + subprocess.run( + f"cd {dest} && git pull --ff-only", + shell=True, check=True, + ) + msg = f"Git source updated: {dest}" + else: + os.makedirs(dest, exist_ok=True) + subprocess.run( + f"git clone {pkg} {dest}", + shell=True, check=True, + ) + msg = f"Git source cloned: {dest}" + + if post_install: + self._run_post_install(tool_id, post_install) + return msg + + def install_git_node( + self, + pkg: str, + tool_id: str, + post_install: str | None = None, + ) -> str: + """Clone a git repo and run ``yarn setup``.""" + dest = os.path.join(self.tools_root, tool_id) + if os.path.exists(dest): + subprocess.run( + f"cd {dest} && git pull --ff-only && yarn install", + shell=True, check=True, + ) + msg = f"Git+Node source updated: {dest}" + else: + os.makedirs(dest, exist_ok=True) + subprocess.run( + f"git clone {pkg} {dest}", + shell=True, check=True, + ) + subprocess.run( + f"cd {dest} && yarn install", + shell=True, check=True, + ) + msg = f"Git+Node source synchronized: {dest}" + + if post_install: + self._run_post_install(tool_id, post_install) + return msg + + def install_script( + self, + cmd: str, + ctx: dict[str, str], + tool_id: str = "", + env_overrides: dict[str, str] | None = None, + ) -> str: + """Execute an arbitrary shell script (installer type ``"script"``). + + The ``{tools_root}`` placeholder is resolved so scripts can + direct output to the correct directory. + """ + if "tools_root" not in ctx: + ctx["tools_root"] = self.tools_root + env = self._env(tool_id, env_overrides) + subprocess.run(cmd.format(**ctx), shell=True, check=True, env=env) + return "Shell script deployment completed." + + def install_custom(self, pkg: str, tool_id: str) -> str: + """Open the install URL in the browser for manual installation.""" + import webbrowser + url = pkg + if not url.startswith("http"): + url = f"https://{url}" + webbrowser.open(url) + return ( + f"Opened {url} in browser for manual installation " + f"of {tool_id}. Follow the instructions on the page." + ) + + # ── Dispatcher ───────────────────────────────────────────────── + + def run( + self, + inst_type: str, + pkg: str, + cmd: str = "", + ctx: dict[str, str] | None = None, + tool_id: str = "", + post_install: str | None = None, + env_overrides: dict[str, str] | None = None, + ) -> str: + """Dispatch to the correct installer strategy. + + Returns a human-readable description of what happened. + + Raises + ------ + ValueError + If *inst_type* is not recognized. + subprocess.CalledProcessError + If the underlying command fails. + """ + ctx = ctx or {} + if not tool_id: + if "github.com" in pkg: + tool_id = (pkg.rstrip("/").rsplit("/", 1)[-1] + .replace(".git", "")) + else: + tool_id = pkg.split("/")[-1].split(":")[0] + + strategies: dict[str, Any] = { + "ollama": lambda: self.install_ollama(pkg, tool_id), + "uv": lambda: self.install_uv(pkg, tool_id, env_overrides), + "pipx": lambda: self.install_pipx(pkg, tool_id, env_overrides), + "pip": lambda: self.install_pip(pkg, tool_id, env_overrides), + "script": lambda: self.install_script( + cmd, ctx, tool_id, env_overrides, + ), + "pacman": lambda: self.install_pacman(pkg), + "dnf": lambda: self.install_dnf(pkg), + "apt": lambda: self.install_apt(pkg), + "npm": lambda: self.install_npm(pkg, tool_id, env_overrides), + "git": lambda: self.install_git( + pkg, tool_id, post_install, env_overrides, + ), + "git_node": lambda: self.install_git_node( + pkg, tool_id, post_install, + ), + "custom": lambda: self.install_custom(pkg, tool_id), + } + handler = strategies.get(inst_type) + if handler is None: + raise ValueError(f"Unknown installer type '{inst_type}'") + return handler() + + # ── Batch operations ──────────────────────────────────────────── + + def preflight_batch( + self, + tools: dict[str, dict[str, Any]], + ) -> dict[str, dict[str, Any]]: + """Run preflight checks for multiple tools at once. + + Parameters + ---------- + tools : + Dict of ``{tool_id: registry_entry}`` from the registry. + + Returns + ------- + Dict of ``{tool_id: preflight_result_dict}``. + """ + results: dict[str, dict[str, Any]] = {} + for tid, meta in tools.items(): + installer = meta.get("installer", {}) + results[tid] = self.preflight( + tool_id=tid, + inst_type=installer.get("type", "pacman"), + pkg=installer.get("pkg", ""), + cmd=installer.get("cmd", ""), + ) + return results + + def install_with_preflight( + self, + tool_id: str, + inst_type: str, + pkg: str, + cmd: str = "", + ctx: dict[str, str] | None = None, + force: bool = False, + post_install: str | None = None, + env_overrides: dict[str, str] | None = None, + ) -> str: + """Install a tool with preflight detection. + + If the tool is already installed and *force* is False, returns + a message saying the tool exists and suggesting an update. + If *force* is True, proceeds with installation regardless. + """ + check = self.preflight(tool_id, inst_type, pkg, cmd) + if check["found"] and not force: + return ( + f"Tool '{tool_id}' already installed at {check['location']}. " + f"Version: {check['version'] or 'unknown'}. " + f"Use force=True to update." + ) + return self.run( + inst_type, pkg, cmd, ctx, tool_id, + post_install, env_overrides, + ) + + # ── Installation verification ─────────────────────────────────── + + def verify( + self, + tool_id: str, + inst_type: str, + pkg: str, + cmd: str = "", + filesystem: dict[str, str] | None = None, + ) -> dict[str, Any]: + """Run a compliance checklist against a single tool installation. + + Checks: + 1. Native install detected + 2. Installed entirely under /mnt/AI (no ~/.local leak) + 3. Config redirected from $HOME + 4. Cache redirected + 5. Logs redirected + 6. Launcher binary accessible + 7. Update command available + 8. Version detection works + 9. Health check (binary --version or --help) + + Returns a dict matching ``VerificationResult`` fields. + """ + from ai_lsc.types import VerifyCheck + + checks: list[VerifyCheck] = [] + fs = filesystem or {} + tool_dir = os.path.join(self.tools_root, tool_id) + + # 1. Native install detected + location, version = self._detect_installation( + tool_id, inst_type, pkg, cmd, + ) + checks.append(VerifyCheck( + name="Native Install", + passed=bool(location), + detail=location or "not found", + )) + + # 2. Installed under /mnt/AI (no system leak) + is_managed = ( + location and location.startswith(self.base_dir) + ) or inst_type == "pacman" or inst_type in ("dnf", "apt") + checks.append(VerifyCheck( + name="Filesystem Compliance", + passed=is_managed, + detail=location or "N/A", + )) + + # 3. Config path (if declared in filesystem spec) + config_path = fs.get("config", "") + if config_path: + full = os.path.join(self.base_dir, config_path) + exists = os.path.isdir(full) + checks.append(VerifyCheck( + name="Config Redirect", + passed=exists or not location, + detail=full, + )) + + # 4. Cache path + cache_path = fs.get("cache", "") + if cache_path: + full = os.path.join(self.base_dir, cache_path) + checks.append(VerifyCheck( + name="Cache Redirect", + passed=os.path.isdir(full) or not location, + detail=full, + )) + + # 5. Logs path + logs_path = fs.get("logs", "") + if logs_path: + full = os.path.join(self.base_dir, logs_path) + checks.append(VerifyCheck( + name="Logs Redirect", + passed=os.path.isdir(full) or not location, + detail=full, + )) + + # 6. Launcher binary accessible + binary = self._binary_name(pkg, inst_type) + bin_path = shutil.which(binary) + checks.append(VerifyCheck( + name="Launcher Accessible", + passed=bool(bin_path), + detail=bin_path or f"{binary} not in PATH", + )) + + # 7. Version detection + checks.append(VerifyCheck( + name="Version Detection", + passed=bool(version), + detail=version or "unknown", + )) + + # 8. Health check (try --version or --help) + healthy = False + if bin_path: + try: + proc = subprocess.run( + f"{bin_path} --version", + shell=True, capture_output=True, text=True, timeout=5, + ) + healthy = proc.returncode == 0 + except Exception: + try: + proc = subprocess.run( + f"{bin_path} --help", + shell=True, capture_output=True, text=True, + timeout=5, + ) + healthy = proc.returncode == 0 + except Exception: + pass + checks.append(VerifyCheck( + name="Health Check", + passed=healthy, + detail="responds to --version/--help" if healthy else "no response", + )) + + return { + "tool_id": tool_id, + "checks": [ + {"name": c.name, "passed": c.passed, "detail": c.detail} + for c in checks + ], + "install_method": inst_type, + "install_location": location or "", + "score": ( + int(sum(1 for c in checks if c.passed) / len(checks) * 100) + if checks else 0 + ), + } diff --git a/src/ai_lsc/runtime/lxc.py b/src/ai_lsc/runtime/lxc.py new file mode 100644 index 0000000..c2c0439 --- /dev/null +++ b/src/ai_lsc/runtime/lxc.py @@ -0,0 +1,299 @@ +"""LXC runtime manager -- Linux Container lifecycle operations. + +Provides start / stop / status / create / destroy / attach operations +for LXC containers. LXC is a lighter-weight alternative to Docker/Podman +that shares the host kernel without the containerd daemon overhead. + +All ``subprocess`` calls are confined here -- UI code never touches LXC +commands directly. +""" + +from __future__ import annotations + +import json +import subprocess +from pathlib import Path +from typing import Any + + +class LxcManager: + """Manages LXC container lifecycle via the ``lxc`` CLI. + + Parameters + ---------- + tools_root : + Base directory for tool installations (used as container + mount source). + logs_root : + Directory for container log files. + lxc_profile : + Default LXC profile name (``"default"`` unless overridden). + """ + + def __init__( + self, + tools_root: str, + logs_root: str, + lxc_profile: str = "default", + ) -> None: + self.tools_root = tools_root + self.logs_root = logs_root + self.lxc_profile = lxc_profile + + # ── Container lifecycle ────────────────────────────────────────── + + def create( + self, + container_name: str, + image: str = "ubuntu:22.04", + config: dict[str, Any] | None = None, + ) -> str: + """Create a new LXC container. + + Parameters + ---------- + container_name : + Name for the new container. + image : + LXC image template (e.g. ``"ubuntu:22.04"``, + ``"alpine"``, ``"archlinux"``). + config : + Optional dict of LXC config key-value pairs that are + written to the container's local config file after + creation. + + Returns + ------- + Description of what was done. + """ + cmd = [ + "lxc-create", + "-n", container_name, + "-t", image.split(":")[0], + "--", image.split(":")[1] if ":" in image else "", + ] + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except FileNotFoundError: + return self._install_hint("lxc-create") + + # Apply custom config if provided + if config: + self._apply_config(container_name, config) + + return f"LXC container '{container_name}' created from {image}" + + def start(self, container_name: str) -> str: + """Start an LXC container.""" + cmd = ["lxc-start", "-n", container_name, "-d"] # -d = daemonize + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except FileNotFoundError: + return self._install_hint("lxc-start") + except subprocess.CalledProcessError as e: + return f"LXC start failed: {e.stderr.strip()}" + return f"LXC container '{container_name}' started" + + def stop(self, container_name: str) -> str: + """Stop a running LXC container.""" + cmd = ["lxc-stop", "-n", container_name, "-t", "5"] # 5s timeout + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except FileNotFoundError: + return self._install_hint("lxc-stop") + except subprocess.CalledProcessError as e: + return f"LXC stop failed: {e.stderr.strip()}" + return f"LXC container '{container_name}' stopped" + + def destroy(self, container_name: str) -> str: + """Destroy (remove) an LXC container.""" + cmd = ["lxc-destroy", "-n", container_name] + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except FileNotFoundError: + return self._install_hint("lxc-destroy") + except subprocess.CalledProcessError as e: + return f"LXC destroy failed: {e.stderr.strip()}" + return f"LXC container '{container_name}' destroyed" + + def freeze(self, container_name: str) -> str: + """Freeze (pause) a running container without stopping it.""" + cmd = ["lxc-freeze", "-n", container_name] + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except (FileNotFoundError, subprocess.CalledProcessError) as e: + return f"LXC freeze failed: {getattr(e, 'stderr', str(e))}" + return f"LXC container '{container_name}' frozen" + + def unfreeze(self, container_name: str) -> str: + """Unfreeze (resume) a paused container.""" + cmd = ["lxc-unfreeze", "-n", container_name] + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except (FileNotFoundError, subprocess.CalledProcessError) as e: + return f"LXC unfreeze failed: {getattr(e, 'stderr', str(e))}" + return f"LXC container '{container_name}' resumed" + + # ── Status / inspection ─────────────────────────────────────────── + + def is_running(self, container_name: str) -> bool: + """Check if a container is currently running.""" + cmd = ["lxc-info", "-n", container_name, "-s"] + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=5 + ) + return "RUNNING" in result.stdout.upper() + except (FileNotFoundError, subprocess.TimeoutExpired): + return False + + def get_state(self, container_name: str) -> str: + """Return the container state (RUNNING, STOPPED, FROZEN).""" + cmd = ["lxc-info", "-n", container_name, "-s"] + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=5 + ) + for state in ("RUNNING", "STOPPED", "FROZEN"): + if state in result.stdout.upper(): + return state + return "UNKNOWN" + except (FileNotFoundError, subprocess.TimeoutExpired): + return "UNKNOWN" + + def list_containers(self, running_only: bool = False) -> list[str]: + """List container names. + + Parameters + ---------- + running_only : + If ``True`` only return running containers. + + Returns + ------- + List of container name strings. + """ + cmd = ["lxc-ls"] + if running_only: + cmd.append("--running") + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=5 + ) + return [ + name.strip() for name in result.stdout.strip().splitlines() + if name.strip() + ] + except (FileNotFoundError, subprocess.TimeoutExpired): + return [] + + # ── Execution ──────────────────────────────────────────────────── + + def attach_exec( + self, + container_name: str, + command: str = "/bin/bash", + ) -> str: + """Execute a command inside a running container (non-interactive).""" + cmd = ["lxc-attach", "-n", container_name, "--", *command.split()] + try: + subprocess.run(cmd, capture_output=True, text=True, check=True) + except (FileNotFoundError, subprocess.CalledProcessError) as e: + return f"LXC attach failed: {getattr(e, 'stderr', str(e))}" + return f"Executed in '{container_name}': {command}" + + def launch_cli( + self, + container_name: str, + ) -> str: + """Open an interactive terminal inside the container. + + Launches an x-terminal-emulator with ``lxc-attach``. + """ + import shutil + term = shutil.which("x-terminal-emulator") or shutil.which("gnome-terminal") or shutil.which("konsole") + if not term: + return "No terminal emulator found for LXC CLI attach." + + subprocess.Popen( + [term, "-e", "bash", "-c", + f"lxc-attach -n {container_name} --clear-env -- " + f"env TERM=xterm-256color /bin/bash"], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + return f"Interactive terminal opened for '{container_name}'" + + # ── Config helpers ────────────────────────────────────────────── + + def _apply_config( + self, + container_name: str, + config: dict[str, Any], + ) -> None: + """Append config key-value pairs to a container's config file.""" + config_path = Path("/var/lib/lxc") / container_name / "config" + if not config_path.exists(): + return + + lines = [] + for key, value in config.items(): + if isinstance(value, (list, tuple)): + lines.append(f"lxc.{key} = {','.join(str(v) for v in value)}") + else: + lines.append(f"lxc.{key} = {value}") + + with open(config_path, "a") as f: + f.write("\n# ai-lsc generated\n") + for line in lines: + f.write(f"{line}\n") + + @staticmethod + def _install_hint(cmd: str) -> str: + return ( + f"LXC not installed. Run: sudo pacman -S lxc\n" + f"Missing command: {cmd}" + ) + + # ── Service delegation (mirrors TmuxManager interface) ─────────── + + def launch_service( + self, + tool_id: str, + command: str, + log_file: str = "", + dtach_bin: str | None = None, + base_bin_dir: str = "", + ) -> str: + """Start a tool as an LXC container service. + + Creates the container if it does not exist, starts it, + and runs the tool command inside. The container is named + ``ai-lsc-`` for consistency. + + Returns a description of what was done. + """ + container_name = f"ai-lsc-{tool_id}" + + if not self.is_running(container_name): + if container_name not in self.list_containers(): + self.create( + container_name, + image="ubuntu:22.04", + config={ + "mount.auto": f"{self.tools_root} opt none bind 0 0", + }, + ) + self.start(container_name) + + # Run the tool command inside the container + if command: + self.attach_exec(container_name, command) + + return f"Tool {tool_id} running in LXC container '{container_name}'" + + def stop_service(self, tool_id: str) -> str: + """Stop the LXC container for a tool.""" + container_name = f"ai-lsc-{tool_id}" + self.stop(container_name) + return f"LXC container '{container_name}' stopped for {tool_id}" diff --git a/src/ai_lsc/runtime/process.py b/src/ai_lsc/runtime/process.py new file mode 100644 index 0000000..a38b500 --- /dev/null +++ b/src/ai_lsc/runtime/process.py @@ -0,0 +1,58 @@ +"""Generic process manager. + +Handles desktop-app launching, process killing via ``pkill``, and +bare ``subprocess.Popen`` calls for non-tmux/non-systemd tools. +""" + +from __future__ import annotations + +import shutil +import subprocess + +# Terminal emulator candidates, ordered by preference. +_TERMINALS = [ + "xterm", "konsole", "gnome-terminal", "xfce4-terminal", + "lxterminal", "alacritty", "kitty", "wezterm", +] + + +def detect_terminal() -> str: + """Return the first available terminal emulator on the system.""" + for term in _TERMINALS: + if shutil.which(term): + return term + return "xterm" + + +class ProcessManager: + """Launch and terminate generic (desktop / CLI) processes.""" + + def launch_desktop(self, command: str) -> None: + """Fire-and-forget launch of a desktop command.""" + subprocess.Popen(command, shell=True) + + def launch_terminal(self, command: str, env: dict[str, str] | None = None) -> None: + """Open *command* inside a new terminal emulator window.""" + term = detect_terminal() + # xterm, alacritty, kitty, wezterm use -e; others use -- + sep = "-e" if term in ("xterm", "alacritty", "kitty", "wezterm") else "--" + subprocess.Popen( + f"{term} {sep} bash -c '{command}'", + shell=True, + env=env, + ) + + def kill_by_name(self, search_term: str) -> None: + """Send SIGTERM to all processes matching *search_term*.""" + subprocess.run( + f"pkill -f {search_term} 2>/dev/null", shell=True, + ) + + def docker_compose_down(self, compose_path: str, timeout: float = 10.0) -> None: + """Run ``docker compose down`` on a given compose file.""" + subprocess.run( + f"docker compose -f {compose_path} down", + shell=True, + timeout=timeout, + capture_output=True, + ) diff --git a/src/ai_lsc/runtime/status.py b/src/ai_lsc/runtime/status.py new file mode 100644 index 0000000..9dedbbf --- /dev/null +++ b/src/ai_lsc/runtime/status.py @@ -0,0 +1,50 @@ +"""Status checker -- unified interface for checking if a service is live. + +Delegates to backend-specific strategies (tmux, systemd, or psutil +process scan) based on the launcher type. +""" + +from __future__ import annotations + +from ai_lsc.runtime.systemd import SystemdManager +from ai_lsc.runtime.tmux import TmuxManager +from ai_lsc.utils.process import first_matching_process + + +class StatusChecker: + """Check service liveness regardless of launcher backend.""" + + def __init__(self) -> None: + self._tmux = TmuxManager() + self._systemd = SystemdManager() + + def is_running( + self, + launcher_type: str, + tool_id: str, + service_cmd: str = "", + search_term: str = "", + ) -> bool: + """Return ``True`` if the service is currently running. + + Parameters + ---------- + launcher_type: + One of ``"tmux"``, ``"systemd"``, or anything else (psutil). + tool_id: + Used by tmux to identify the window. + service_cmd: + Used by systemd ``is-active``. + search_term: + Used by psutil ``process_iter`` scan. + """ + strategy = { + "systemd": lambda: self._systemd.is_active(service_cmd), + "tmux": lambda: self._tmux.is_running(tool_id), + }.get(launcher_type) + + if strategy is not None: + return strategy() + + # fallback: psutil scan + return first_matching_process(search_term) is not None diff --git a/src/ai_lsc/runtime/systemd.py b/src/ai_lsc/runtime/systemd.py new file mode 100644 index 0000000..6db059d --- /dev/null +++ b/src/ai_lsc/runtime/systemd.py @@ -0,0 +1,44 @@ +"""Systemd service manager. + +Wraps ``systemctl`` calls for tools that launch as system services. +""" + +from __future__ import annotations + +import subprocess + +from ai_lsc.runtime.process import detect_terminal + + +class SystemdManager: + """Start, stop, and query systemd services.""" + + def start(self, service_cmd: str) -> None: + """Enable + start a systemd service via a terminal emulator.""" + term = detect_terminal() + sep = "-e" if term in ("xterm", "alacritty", "kitty", "wezterm") else "--" + subprocess.Popen( + f"{term} {sep} sudo systemctl start {service_cmd}", + shell=True, + ) + + def stop(self, service_cmd: str) -> None: + """Stop a systemd service via a terminal emulator.""" + term = detect_terminal() + sep = "-e" if term in ("xterm", "alacritty", "kitty", "wezterm") else "--" + subprocess.Popen( + f"{term} {sep} sudo systemctl stop {service_cmd}", + shell=True, + ) + + def is_active(self, service_cmd: str) -> bool: + """Return ``True`` if the service reports 'active'.""" + return ( + subprocess.run( + f"systemctl is-active {service_cmd}", + shell=True, + capture_output=True, + text=True, + ).stdout.strip() + == "active" + ) diff --git a/src/ai_lsc/runtime/tmux.py b/src/ai_lsc/runtime/tmux.py new file mode 100644 index 0000000..f19170a --- /dev/null +++ b/src/ai_lsc/runtime/tmux.py @@ -0,0 +1,147 @@ +"""Tmux session/window manager. + +Wraps all ``tmux`` CLI interactions: session creation, window +management, command sending, and live-window querying. + +Every public method returns a value or raises -- no UI imports. +""" + +from __future__ import annotations + +import subprocess +from pathlib import Path + + +class TmuxManager: + """Manages tmux sessions and windows for service isolation.""" + + SESSION = "ai_lsc" + + def __init__(self, env: dict[str, str] | None = None) -> None: + self.env = env + + # -- session lifecycle ------------------------------------------------ + + def ensure_session(self) -> None: + """Create the master session if it does not already exist.""" + subprocess.run( + f"tmux has-session -t {self.SESSION} 2>/dev/null " + f"|| tmux new-session -d -s {self.SESSION} -n 'Master' " + f"2>/dev/null", + shell=True, + ) + + def window_exists(self, window_name: str) -> bool: + """Check if a named window exists in the session.""" + return ( + subprocess.run( + f"tmux list-windows -t {self.SESSION} 2>/dev/null " + f"| grep '{window_name}'", + shell=True, + capture_output=True, + ).returncode + == 0 + ) + + def kill_window(self, window_name: str) -> None: + """Safely kill a window (ignores errors if missing).""" + subprocess.run( + f"tmux kill-window -t {self.SESSION}:'{window_name}' 2>/dev/null", + shell=True, + ) + + def create_window(self, window_name: str) -> None: + """Create a new detached window inside the session. + + Retries up to 5 times with a short sleep when tmux reports + an index collision (happens when concurrent launches race). + """ + import time + + for attempt in range(5): + proc = subprocess.run( + f"tmux new-window -t {self.SESSION} -n '{window_name}' -d 2>&1", + shell=True, + capture_output=True, + text=True, + ) + if proc.returncode == 0: + return + # If window already exists with this name, that's fine too + if self.window_exists(window_name): + return + # Index collision — wait and retry + if "index" in proc.stderr and "in use" in proc.stderr: + time.sleep(0.1 * (attempt + 1)) + continue + break # some other error, stop retrying + + def send_command( + self, + window_name: str, + command: str, + extra_env: str = "", + ) -> None: + """Send a command string to a window, optionally prepending env.""" + payload = f"{extra_env} {command}" if extra_env else command + subprocess.run( + f"tmux send-keys -t {self.SESSION}:'{window_name}' " + f"'{payload}' C-m 2>/dev/null", + shell=True, + ) + + # -- high-level service lifecycle ------------------------------------- + + def launch_service( + self, + tool_id: str, + command: str, + log_file: str, + dtach_bin: str | None = None, + base_bin_dir: str = "", + ) -> None: + """Isolate a service in its own tmux window (optionally via dtach). + + Parameters + ---------- + tool_id: + Service identifier used as the window name. + command: + Shell command to run inside the window. + log_file: + Path where stdout/stderr should be redirected. + dtach_bin: + Path to dtach binary for persistent attach/detach. + base_bin_dir: + PATH colon-separated string to prepend. + """ + window_name = f"{self.SESSION}::{tool_id}" + track_cmd = f"({command}) > {log_file} 2>&1" + + wrapped = track_cmd + if dtach_bin: + socket_path = f"/tmp/{tool_id}.sock" + wrapped = f"{dtach_bin} -n {socket_path} bash -c '{track_cmd}'" + + self.ensure_session() + self.kill_window(window_name) + self.create_window(window_name) + + env_exports = "" + if base_bin_dir: + env_exports = f"export PATH={base_bin_dir}:$PATH; " + + self.send_command(window_name, wrapped, extra_env=env_exports) + + def stop_service(self, tool_id: str) -> None: + """Kill the tmux window for a service.""" + window_name = f"{self.SESSION}::{tool_id}" + self.kill_window(window_name) + + def is_running(self, tool_id: str) -> bool: + """Check whether the tmux window for *tool_id* is live.""" + return self.window_exists(f"{self.SESSION}::{tool_id}") + + def attach_cli(self, tool_id: str) -> str: + """Return a shell fragment that attaches to the service window.""" + return f"tmux attach -t {self.SESSION}:'{self.SESSION}::{tool_id}' || " diff --git a/src/ai_lsc/service/__init__.py b/src/ai_lsc/service/__init__.py new file mode 100644 index 0000000..f8d9a4b --- /dev/null +++ b/src/ai_lsc/service/__init__.py @@ -0,0 +1 @@ +"""AI-LSC service management sub-package.""" diff --git a/src/ai_lsc/skills/__init__.py b/src/ai_lsc/skills/__init__.py new file mode 100644 index 0000000..4df1ee9 --- /dev/null +++ b/src/ai_lsc/skills/__init__.py @@ -0,0 +1 @@ +"""AI-LSC skills sub-package.""" diff --git a/src/ai_lsc/skills/agent-orchestrator.skill.json b/src/ai_lsc/skills/agent-orchestrator.skill.json new file mode 100644 index 0000000..4fa9b70 --- /dev/null +++ b/src/ai_lsc/skills/agent-orchestrator.skill.json @@ -0,0 +1,32 @@ +{ + "name": "agent-orchestrator", + "description": "Full 7-layer agentic orchestration: route, load skills, clarify intent, plan, orchestrate tools, spawn subagents, enforce quality", + "required_tools": ["ollama", "redis"], + "triggers": [ + "orchestrate pipeline", + "set up agentic workflow", + "autonomous task", + "multi-step agent", + "plan and execute" + ], + "input_schema": { + "type": "object", + "properties": { + "task": { + "type": "string", + "description": "The high-level task description" + }, + "complexity": { + "type": "string", + "enum": ["simple", "moderate", "complex"], + "description": "Expected task complexity level" + }, + "allow_subagents": { + "type": "boolean", + "description": "Whether to spawn subagents for parallelizable subtasks" + } + }, + "required": ["task"] + }, + "category": "orchestration" +} diff --git a/src/ai_lsc/skills/code-reviewer.skill.json b/src/ai_lsc/skills/code-reviewer.skill.json new file mode 100644 index 0000000..9518bfd --- /dev/null +++ b/src/ai_lsc/skills/code-reviewer.skill.json @@ -0,0 +1,33 @@ +{ + "name": "code-reviewer", + "description": "Review code for bugs, style issues, and architectural problems using multi-model analysis", + "required_tools": ["ollama"], + "triggers": [ + "review code", + "check for bugs", + "code quality", + "lint analysis", + "refactor suggestion" + ], + "input_schema": { + "type": "object", + "properties": { + "file_path": { + "type": "string", + "description": "Path to the file or directory to review" + }, + "focus": { + "type": "string", + "enum": ["bugs", "style", "architecture", "security", "performance", "all"], + "description": "Review focus area" + }, + "severity": { + "type": "string", + "enum": ["critical", "warning", "info", "all"], + "description": "Minimum severity level to report" + } + }, + "required": ["file_path"] + }, + "category": "development" +} diff --git a/src/ai_lsc/skills/rag-analyst.skill.json b/src/ai_lsc/skills/rag-analyst.skill.json new file mode 100644 index 0000000..0163942 --- /dev/null +++ b/src/ai_lsc/skills/rag-analyst.skill.json @@ -0,0 +1,31 @@ +{ + "name": "rag-analyst", + "description": "Analyze documents using RAG pipeline with vector similarity search", + "required_tools": ["qdrant", "ollama"], + "triggers": [ + "analyze document", + "search knowledge base", + "find similar", + "rag query", + "vector search" + ], + "input_schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The search query to run against the vector database" + }, + "collection": { + "type": "string", + "description": "Vector collection name to search in" + }, + "top_k": { + "type": "integer", + "description": "Number of results to return" + } + }, + "required": ["query"] + }, + "category": "analysis" +} diff --git a/src/ai_lsc/skills/redis-operator.skill.json b/src/ai_lsc/skills/redis-operator.skill.json new file mode 100644 index 0000000..161ca04 --- /dev/null +++ b/src/ai_lsc/skills/redis-operator.skill.json @@ -0,0 +1,32 @@ +{ + "name": "redis-operator", + "description": "Manage Redis hot-path operations: task queues, pub/sub events, status caching, agent state, distributed locks", + "required_tools": ["redis"], + "triggers": [ + "enqueue task", + "publish event", + "cache status", + "agent queue", + "task coordination" + ], + "input_schema": { + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": ["enqueue", "dequeue", "publish", "cache_status", "get_status", "acquire_lock", "release_lock"], + "description": "The Redis operation to perform" + }, + "queue_name": { + "type": "string", + "description": "Queue name for enqueue/dequeue operations" + }, + "data": { + "type": "object", + "description": "Payload data for the operation" + } + }, + "required": ["operation"] + }, + "category": "orchestration" +} diff --git a/src/ai_lsc/skills/resolver.py b/src/ai_lsc/skills/resolver.py new file mode 100644 index 0000000..68e5741 --- /dev/null +++ b/src/ai_lsc/skills/resolver.py @@ -0,0 +1,62 @@ +""" +AI-LSC — Skill runtime resolver. + +Scans the on-disk skill definition files under ``/skills/`` +and extracts their ``SYSTEM`` blocks (the system prompt injected into +Ollama modelfiles). This is pure string/regex work — no UI. +""" + +from __future__ import annotations + +import re +from pathlib import Path + + +class SkillRuntimeResolver: + """Parses skill definitions to extract runtime system prompts. + + Each skill is a plain-text file whose ``SYSTEM`` block is either + a triple-quoted string or a single-quoted string. The resolver + searches for these patterns and returns the first match. + + Parameters + ---------- + skills_root : + Absolute path to the directory containing skill definition files. + """ + + _PATTERNS: list[tuple[str, re.RegexFlag]] = [ + (r'SYSTEM\s+"""(.*?)"""', re.DOTALL | re.IGNORECASE), + (r'SYSTEM\s+"(.*?)"', re.IGNORECASE), + ] + + def __init__(self, skills_root: str | Path) -> None: + self.skills_root = Path(skills_root) + + def extract_system_prompt(self, skill_name: str) -> str: + """Return the SYSTEM block from *skill_name*, or ``""``.""" + path = self.skills_root / skill_name + if not path.exists(): + return "" + + try: + content = path.read_text(encoding="utf-8", errors="ignore") + except OSError: + return "" + + return next( + (m.group(1).strip() + for pattern, flags in self._PATTERNS + for m in [re.search(pattern, content, flags)] + if m), + "", + ) + + def list_available_skills(self) -> list[str]: + """Return sorted names of all files in the skills directory.""" + if not self.skills_root.is_dir(): + return [] + return sorted( + p.name for p in self.skills_root.iterdir() + if p.is_file() + ) diff --git a/src/ai_lsc/skills/stack-operator.skill.json b/src/ai_lsc/skills/stack-operator.skill.json new file mode 100644 index 0000000..2991261 --- /dev/null +++ b/src/ai_lsc/skills/stack-operator.skill.json @@ -0,0 +1,29 @@ +{ + "name": "stack-operator", + "description": "Orchestrate AI-LSC managed services — start, stop, monitor, and configure the tool stack", + "required_tools": ["ollama", "redis"], + "triggers": [ + "start the stack", + "stop service", + "check status", + "pull model", + "set up pipeline", + "deploy stack" + ], + "input_schema": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": ["start", "stop", "status", "pull", "configure"], + "description": "The operation to perform" + }, + "target": { + "type": "string", + "description": "Tool ID or model name to operate on" + } + }, + "required": ["action", "target"] + }, + "category": "orchestration" +} diff --git a/src/ai_lsc/skills/vector-search.skill.json b/src/ai_lsc/skills/vector-search.skill.json new file mode 100644 index 0000000..98c097f --- /dev/null +++ b/src/ai_lsc/skills/vector-search.skill.json @@ -0,0 +1,37 @@ +{ + "name": "vector-search", + "description": "Semantic vector search using Qdrant: create collections, upsert documents, similarity search, skill matching, RAG retrieval", + "required_tools": ["qdrant", "ollama"], + "triggers": [ + "vector search", + "find similar", + "semantic search", + "rag retrieval", + "index documents", + "search knowledge" + ], + "input_schema": { + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": ["create_collection", "search", "upsert", "index_skills", "delete_points"], + "description": "The vector operation to perform" + }, + "collection": { + "type": "string", + "description": "Collection name to operate on" + }, + "query": { + "type": "string", + "description": "Search query text" + }, + "limit": { + "type": "integer", + "description": "Maximum number of results" + } + }, + "required": ["operation", "collection"] + }, + "category": "analysis" +} diff --git a/src/ai_lsc/stack/__init__.py b/src/ai_lsc/stack/__init__.py new file mode 100644 index 0000000..71aa892 --- /dev/null +++ b/src/ai_lsc/stack/__init__.py @@ -0,0 +1 @@ +"""AI-LSC stack sub-package.""" diff --git a/src/ai_lsc/stack/export.py b/src/ai_lsc/stack/export.py new file mode 100644 index 0000000..25f7739 --- /dev/null +++ b/src/ai_lsc/stack/export.py @@ -0,0 +1,327 @@ +""" +AI-LSC -- Stack export and container backend. + +Contains pure-logic functions for: + +* **build_stack_spec** -- serialises the current pipeline state plus + registry metadata into a portable JSON spec. +* **ContainerBackend** -- generates Podman/Docker compose YAML, + LXC container configs, or JSON fallback from that spec. + +No UI code here. All path operations use :mod:`pathlib`. +""" + +from __future__ import annotations + +import json +from datetime import datetime +from pathlib import Path +from typing import Any + +from ai_lsc.constants import BASE_DIR, STACK_SCHEMA_VERSION +from ai_lsc.registry.manager import RegistryManager +from ai_lsc.utils.paths import build_path_tree + + +def build_stack_spec( + state: dict[str, Any], + registry: RegistryManager, + backend: str = "podman", +) -> dict[str, Any]: + """Build a portable stack spec from the current state + registry. + + The resulting dict is JSON-serialisable and can be passed to + ``ContainerBackend`` for compose-file / config generation. + + Parameters + ---------- + state : + Pipeline state dict (must contain ``active_tools`` and + optionally ``port_map``). + registry : + A loaded ``RegistryManager`` instance. + backend : + Container backend type (``"podman"``, ``"docker"``, or ``"lxc"``). + """ + tools = [ + { + "id": tid, + "name": registry.get_tool(tid).get("name"), + "layer": registry.get_tool(tid).get("layer"), + "role": registry.get_tool(tid).get("role"), + "category": registry.get_tool(tid).get("category"), + "launcher": registry.get_tool(tid).get("launcher"), + "installer": registry.get_tool(tid).get("installer"), + "deps": registry.get_tool(tid).get("deps", []), + } + for tid in state.get("active_tools", []) + if not tid.startswith("skill:") + ] + + return { + "schema": STACK_SCHEMA_VERSION, + "created": datetime.now().isoformat(), + "backend": backend, + "tools": tools, + "ports": state.get("port_map", {}), + "base_dir": BASE_DIR, + } + + +class ContainerBackend: + """Generates container deployment files from a stack spec. + + Supports three backends: + + * **podman/docker** -- ``docker-compose.yaml`` (version 3.8) + * **lxc** -- per-container config files + launch script + + Parameters + ---------- + exports_root : + Directory where output files are written. + """ + + def __init__(self, exports_root: str | Path) -> None: + self.exports_root = Path(exports_root) + + # ── Compose (Podman / Docker) ────────────────────────────────────── + + def generate_compose_yaml(self, spec: dict) -> dict: + """Transform a stack spec into a compose-file data structure. + + Each tool becomes a service with ``network_mode: host``, + ``restart: unless-stopped``, and the base directory mounted as a + volume. The launcher command's ``{placeholders}`` are resolved + to absolute paths. + """ + paths = build_path_tree(spec.get("base_dir", BASE_DIR)) + services: dict[str, dict] = {} + + for tool in spec.get("tools", []): + raw_cmd = tool.get("launcher", {}).get("cmd", "") + svc: dict[str, Any] = { + "image": f"localhost/ai-lsc-{tool['id']}:latest", + "network_mode": "host", + "restart": "unless-stopped", + "volumes": [f"{paths['base_dir']}:{paths['base_dir']}"], + } + clean_cmd = ( + raw_cmd + .replace("{base_dir}", str(paths["base_dir"])) + .replace("{tools_root}", str(paths["tools_root"])) + .replace("{models_root}", str(paths["models_root"])) + .replace("{workspaces_root}", str(paths["workspaces_root"])) + ) + if clean_cmd.strip(): + svc["command"] = clean_cmd + services[tool["id"]] = svc + + return {"version": "3.8", "services": services} + + def write_compose( + self, + spec: dict, + backend_type: str = "podman", + ) -> Path: + """Write compose YAML (or JSON fallback) to disk. + + Returns the path of the written file. + """ + self.exports_root.mkdir(parents=True, exist_ok=True) + file_path = self.exports_root / f"{backend_type}-compose.yml" + compose_data = self.generate_compose_yaml(spec) + + try: + import yaml + file_path.write_text( + yaml.dump(compose_data, sort_keys=False), + encoding="utf-8", + ) + except ImportError: + file_path.write_text( + json.dumps(compose_data, indent=4), + encoding="utf-8", + ) + + return file_path + + # ── LXC backend ───────────────────────────────────────────────────── + + def generate_lxc_configs(self, spec: dict) -> dict[str, str]: + """Generate LXC config blocks for each tool in the stack. + + Returns a dict mapping container names to their config file + content. Each config block includes: + + * Base OS template (default: ``ubuntu:22.04``) + * Network mode (``lxc.net.0.type = veth`` or ``none``) + * Mount points for the base directory hierarchy + * Autostart flag + * Tool-specific command to execute on start + """ + paths = build_path_tree(spec.get("base_dir", BASE_DIR)) + configs: dict[str, str] = {} + + for tool in spec.get("tools", []): + container_name = f"ai-lsc-{tool['id']}" + raw_cmd = tool.get("launcher", {}).get("cmd", "") + + # Resolve placeholders in the command + clean_cmd = ( + raw_cmd + .replace("{base_dir}", str(paths["base_dir"])) + .replace("{tools_root}", str(paths["tools_root"])) + .replace("{models_root}", str(paths["models_root"])) + .replace("{workspaces_root}", str(paths["workspaces_root"])) + ) + + lines = [ + f"# AI-LSC auto-generated LXC config for {tool['id']}", + f"# Container: {container_name}", + f"# Tool: {tool.get('name', tool['id'])}", + "", + "# -- Basic container settings --", + "lxc.uts.name = " + container_name, + "lxc.init.cmd = /bin/bash", + "", + "# -- Network --", + "lxc.net.0.type = veth", + "lxc.net.0.flags = up", + "lxc.net.0.link = lxcbr0", + "", + "# -- Mounts --", + f"lxc.mount.auto = proc:mixed sys:ro", + f"lxc.rootfs.mount = {paths['base_dir']}/containers/{container_name}/rootfs", + f"# Mount AI stack base directory", + f"lxc.mount.entry = {paths['base_dir']} {paths['base_dir']} none bind,rw 0 0", + f"# Mount tools directory", + f"lxc.mount.entry = {paths['tools_root']} {paths['tools_root']} none bind,rw 0 0", + f"# Mount models directory", + f"lxc.mount.entry = {paths['models_root']} {paths['models_root']} none bind,rw 0 0", + "", + "# -- Autostart --", + "lxc.start.auto = 1", + "lxc.start.delay = 5", + "", + "# -- Tool launch command --", + f"lxc.execute.post = /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin {clean_cmd}" if clean_cmd.strip() else "", + ] + + configs[container_name] = "\n".join( + line for line in lines if line + ) + + return configs + + def write_lxc( + self, + spec: dict, + ) -> Path: + """Write LXC configs and a launch script to disk. + + Creates: + * ``/lxc/`` -- per-container config files + * ``/lxc-launch.sh`` -- shell script to create + and start all containers + + Returns the path of the launch script. + """ + lxc_dir = self.exports_root / "lxc" + lxc_dir.mkdir(parents=True, exist_ok=True) + + configs = self.generate_lxc_configs(spec) + container_names: list[str] = [] + + # Write individual config files + for container_name, config_text in configs.items(): + config_path = lxc_dir / f"{container_name}.conf" + config_path.write_text(config_text, encoding="utf-8") + container_names.append(container_name) + + # Generate launch script + script_lines = [ + "#!/usr/bin/env bash", + "# AI-LSC LXC Stack Launcher", + f"# Generated: {datetime.now().isoformat()}", + f"# Containers: {len(container_names)}", + f"# Backend: lxc", + "", + 'set -euo pipefail', + "", + "LXC_DIR=\"$(cd \"$(dirname \"$0\")\" && pwd)\"", + "", + "echo \"[AI-LSC] Creating LXC containers...\"", + "", + ] + + for container_name in container_names: + conf_file = f"{container_name}.conf" + script_lines.extend([ + f"if ! lxc-info -n {container_name} >/dev/null 2>&1; then", + f" echo \" Creating {container_name}...\"", + f" lxc-create -n {container_name} -t download -- -d ubuntu -r jammy -a amd64", + f" cp \"$LXC_DIR/{conf_file}\" /var/lib/lxc/{container_name}/config.d/ai-lsc.conf", + f"else", + f" echo \" {container_name} already exists, skipping creation\"", + f"fi", + "", + ]) + + script_lines.extend([ + "", + "echo \"[AI-LSC] Starting LXC containers...\"", + "", + ]) + + for container_name in container_names: + script_lines.append( + f"echo \" Starting {container_name}...\"" + ) + script_lines.append( + f"lxc-start -n {container_name} -d -F \"$LXC_DIR/{container_name}.conf\" 2>/dev/null || " + f"lxc-start -n {container_name} -d" + ) + script_lines.append("") + + script_lines.extend([ + "echo \"[AI-LSC] Stack launched. Use 'lxc-ls --running' to verify.\"", + f"echo \"[AI-LSC] {len(container_names)} containers active.\"", + "", + "# -- Stop command --", + f"echo ''", + f"echo 'To stop all containers:'", + f"for c in {' '.join(container_names)}; do", + f" echo \" lxc-stop -n $c -t 5\"", + f"done", + ]) + + launch_script = self.exports_root / "lxc-launch.sh" + launch_script.write_text("\n".join(script_lines), encoding="utf-8") + launch_script.chmod(0o755) + + return launch_script + + # ── Unified write (auto-selects backend) ────────────────────────── + + def write( + self, + spec: dict, + backend_type: str = "podman", + ) -> Path: + """Write deployment files for the specified backend. + + Parameters + ---------- + spec : + Stack specification dict (from ``build_stack_spec``). + backend_type : + One of ``"podman"``, ``"docker"``, or ``"lxc"``. + + Returns + ------- + Path to the primary output file. + """ + if backend_type == "lxc": + return self.write_lxc(spec) + return self.write_compose(spec, backend_type=backend_type) diff --git a/src/ai_lsc/types.py b/src/ai_lsc/types.py new file mode 100644 index 0000000..87dd781 --- /dev/null +++ b/src/ai_lsc/types.py @@ -0,0 +1,315 @@ +""" +AI-LSC — Typed data structures. + +Every module in the package should import types from here instead of passing +around raw ``dict`` objects. Each dataclass has a ``from_dict`` classmethod +so we can hydrate from existing JSON / registry data with zero breakage. +""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum +from typing import Any + + +# ── Enumerations ──────────────────────────────────────────────────────── + +class LauncherType(Enum): + """How a tool's process is managed.""" + SYSTEMD = "systemd" + TMUX = "tmux" + DESKTOP = "desktop" + LXC = "lxc" + + +class InstallerType(Enum): + """How a tool is installed on the host. + + Step-down containment order (most isolated first): + ollama → uv → pipx → pip → git → git_node → npm → pacman → script → custom + + - **ollama**: Native ollama pull / model management. + - **uv**: ``uv tool install`` with ``--install-dir`` pinned to + ``/mnt/AI/tools/`` for full isolation. + - **pipx**: ``pipx install`` with ``PIPX_BIN_DIR`` and + ``PIPX_HOME`` remapped into ``/mnt/AI/tools//.pipx``. + - **pip**: ``pip install --user --target`` into a per-tool venv + under ``/mnt/AI/tools//.venv``. + - **git**: ``git clone`` into ``/mnt/AI/tools/``. + - **git_node**: git clone + npm/yarn setup in ``/mnt/AI/tools/``. + - **npm**: ``npm install --prefix /mnt/AI/tools/``. + - **pacman**: System package (cannot relocate). + - **dnf**: Red Hat / Fedora system package (cannot relocate). + - **apt**: Debian / Ubuntu system package (cannot relocate). + - **script**: Arbitrary shell command (must reference {tools_root}). + - **custom**: Manual install — opens the install URL in browser. + """ + OLLAMA = "ollama" + UV = "uv" + PIPX = "pipx" + PIP = "pip" + NPM = "npm" + GIT = "git" + GIT_NODE = "git_node" + PACMAN = "pacman" + DNF = "dnf" + APT = "apt" + SCRIPT = "script" + CUSTOM = "custom" + + +# ── Tool metadata ─────────────────────────────────────────────────────── + +@dataclass(frozen=True) +class InstallerSpec: + """Immutable description of how to install a tool.""" + type: InstallerType + pkg: str + cmd: str | None = None # only for "script" type + post_install: str | None = None # post-clone setup (pip install -r, make, etc.) + update_cmd: str | None = None # explicit update command (git pull, pip --upgrade, etc.) + env_overrides: tuple[tuple[str, str], ...] = () # per-tool env var remappings + + +@dataclass(frozen=True) +class FilesystemSpec: + """Declares where a tool's artifacts live relative to base_dir. + + All paths are relative and expanded against ``BASE_DIR`` + at runtime. This keeps the registry portable — change one setting + and every tool follows. + + Example:: + + fs = FilesystemSpec( + install="tools/vllm", + config="configs/vllm", + cache="cache/vllm", + logs="logs/vllm", + ) + """ + install: str = "" # Primary install dir (relative to base_dir) + config: str = "" # Configuration files + cache: str = "" # Download / build caches + data: str = "" # Runtime databases / state + logs: str = "" # Log files + runtime: str = "" # PID files, sockets, tmp runtime + models: str = "" # Model files (if tool has own models) + + +@dataclass(frozen=True) +class LauncherSpec: + """Immutable description of how to launch a tool.""" + type: LauncherType + cmd: str + default_port: int | None = None + + +@dataclass(frozen=True) +class ToolFlags: + """Structured boolean flags from the registry entry.""" + has_cli: bool = False + has_gui: bool = False + has_web: bool = False + is_ollama: bool = False + is_docker: bool = False + + @classmethod + def from_dict(cls, raw: dict[str, Any]) -> ToolFlags: + return cls( + has_cli=raw.get("has_cli", False), + has_gui=raw.get("has_gui", False), + has_web=raw.get("has_web", False), + is_ollama=raw.get("is_ollama", False), + is_docker=raw.get("is_docker", False), + ) + + +@dataclass(frozen=True) +class ToolMetadata: + """The strongly-typed representation of a single registry entry. + + Construction from a raw dict is lossy by design — unknown keys are + silently dropped so new optional fields added to the registry schema + do not break deserialization. + """ + tool_id: str + name: str + level: int + layer: str + role: str + category: str + installer: InstallerSpec + launcher: LauncherSpec + deps: tuple[str, ...] = () + description: str = "" + flags: ToolFlags = field(default_factory=ToolFlags) + filesystem: FilesystemSpec = field(default_factory=FilesystemSpec) + + @classmethod + def from_dict(cls, tool_id: str, raw: dict[str, Any]) -> ToolMetadata: + inst_raw = raw.get("installer", {}) + launch_raw = raw.get("launcher", {}) + fs_raw = raw.get("filesystem", {}) + + installer = InstallerSpec( + type=InstallerType(inst_raw.get("type", "pacman")), + pkg=inst_raw.get("pkg", ""), + cmd=inst_raw.get("cmd"), + post_install=inst_raw.get("post_install"), + update_cmd=inst_raw.get("update_cmd"), + env_overrides=tuple( + (k, v) for k, v in inst_raw.get("env_overrides", {}).items() + ), + ) + launcher = LauncherSpec( + type=LauncherType(launch_raw.get("type", "desktop")), + cmd=launch_raw.get("cmd", ""), + default_port=launch_raw.get("default_port"), + ) + flags = ToolFlags.from_dict(raw.get("flags", {})) + filesystem = FilesystemSpec( + install=fs_raw.get("install", ""), + config=fs_raw.get("config", ""), + cache=fs_raw.get("cache", ""), + data=fs_raw.get("data", ""), + logs=fs_raw.get("logs", ""), + runtime=fs_raw.get("runtime", ""), + models=fs_raw.get("models", ""), + ) + + return cls( + tool_id=tool_id, + name=raw.get("name", tool_id), + level=raw.get("level", 0), + layer=raw.get("layer", "Uncategorized"), + role=raw.get("role", ""), + category=raw.get("category", ""), + installer=installer, + launcher=launcher, + deps=tuple(raw.get("deps", [])), + description=raw.get("description", ""), + flags=flags, + filesystem=filesystem, + ) + + @property + def search_term(self) -> str: + """Default process name used for status polling.""" + return self.installer.pkg or self.tool_id + + @property + def is_skill(self) -> bool: + return self.tool_id.startswith("skill:") + + +# ── Installation verification ──────────────────────────────────────── + +@dataclass(frozen=True) +class VerifyCheck: + """A single verification check for a tool installation.""" + name: str + passed: bool + detail: str = "" + + +@dataclass +class VerificationResult: + """Complete verification result for a single tool. + + Produces a quality score 0–100 based on how many checks pass. + """ + tool_id: str + checks: list[VerifyCheck] = field(default_factory=list) + install_method: str = "" # how the tool was actually installed + install_location: str = "" # where it was found + + @property + def score(self) -> int: + """Quality score 0–100.""" + if not self.checks: + return 0 + passed = sum(1 for c in self.checks if c.passed) + return int((passed / len(self.checks)) * 100) + + @property + def summary(self) -> str: + lines = [f"{self.tool_id} — Score: {self.score}%"] + for c in self.checks: + status = "PASS" if c.passed else "FAIL" + lines.append(f" [{status}] {c.name}: {c.detail}") + return "\n".join(lines) + + +# ── Installation state ────────────────────────────────────────────────── + +@dataclass +class PreflightResult: + """Result of a pre-installation existence check. + + Returned by ``InstallerManager.preflight()`` so the UI can show + "already installed → update?" or "not found → install?". + """ + tool_id: str + found: bool = False + install_type: str = "" # InstallerType value that owns the tool + location: str = "" # Where the binary/artifact was detected + version: str = "" # Detected version string (if any) + is_update_available: bool = False + suggested_action: str = "install" # "install" | "update" | "none" + + @property + def summary(self) -> str: + if not self.found: + return f"{self.tool_id}: not found — ready to install" + action = "update available" if self.is_update_available else "up to date" + return f"{self.tool_id}: {self.version or 'installed'} at {self.location} ({action})" + + +# ── Runtime state ────────────────────────────────────────────────────── + +@dataclass +class ServiceState: + """Mutable snapshot of a single tool's runtime status.""" + tool_id: str + running: bool = False + pid: int | None = None + cpu_percent: float = 0.0 + + +@dataclass +class PipelineState: + """On-disk state representation (maps to ``pipeline_state.json``).""" + session_name: str = "ai_lsc" + base_dir: str = "" + active_tools: list[str] = field(default_factory=list) + port_map: dict[str, int | None] = field(default_factory=dict) + stack_ready: bool = False + compiled_pipelines: list[dict] = field(default_factory=list) + + def __post_init__(self) -> None: + if not self.base_dir: + from ai_lsc.constants import BASE_DIR + self.base_dir = BASE_DIR + + @classmethod + def from_dict(cls, raw: dict) -> PipelineState: + return cls( + session_name=raw.get("session_name", "ai_lsc"), + base_dir=raw.get("base_dir", ""), + active_tools=raw.get("active_tools", []), + port_map=raw.get("port_map", {}), + stack_ready=raw.get("stack_ready", False), + compiled_pipelines=raw.get("compiled_pipelines", []), + ) + + def to_dict(self) -> dict: + return { + "session_name": self.session_name, + "base_dir": self.base_dir, + "active_tools": self.active_tools, + "port_map": self.port_map, + "stack_ready": self.stack_ready, + "compiled_pipelines": self.compiled_pipelines, + } diff --git a/src/ai_lsc/ui/__init__.py b/src/ai_lsc/ui/__init__.py new file mode 100644 index 0000000..ea12ca4 --- /dev/null +++ b/src/ai_lsc/ui/__init__.py @@ -0,0 +1,39 @@ +"""AI-LSC UI sub-package. + +All PySide6-dependent UI widgets live here. If PySide6 is not installed +the sub-package still imports but the concrete widget classes will be ``None``. + +Sub-packages +------------ +pages + Individual tab/page widgets (ServiceRow, ChatbotConsole, etc.). +dialogs + Modal dialogs (StackWizard). +protocol + :class:`MainWindowProtocol` interface for decoupling pages from + the concrete main window. +""" + +from ai_lsc.ui.protocol import MainWindowProtocol # noqa: F401 + +# Lazy re-exports -- guarded so the package is importable without Qt. +try: + from ai_lsc.ui.main_window import ( + AILocalStackControl, # noqa: F401 + apply_terminal_theme, # noqa: F401 + ) +except ImportError: + AILocalStackControl = None # type: ignore[assignment, misc] + apply_terminal_theme = None # type: ignore[assignment, misc] + +try: + from ai_lsc.ui.dialogs.stack_wizard import StackWizard # noqa: F401 +except ImportError: + StackWizard = None # type: ignore[assignment, misc] + +__all__ = [ + "MainWindowProtocol", + "AILocalStackControl", + "apply_terminal_theme", + "StackWizard", +] diff --git a/src/ai_lsc/ui/dialogs/__init__.py b/src/ai_lsc/ui/dialogs/__init__.py new file mode 100644 index 0000000..4564a49 --- /dev/null +++ b/src/ai_lsc/ui/dialogs/__init__.py @@ -0,0 +1 @@ +"""AI-LSC UI dialogs sub-package.""" diff --git a/src/ai_lsc/ui/dialogs/stack_wizard.py b/src/ai_lsc/ui/dialogs/stack_wizard.py new file mode 100644 index 0000000..3892e6b --- /dev/null +++ b/src/ai_lsc/ui/dialogs/stack_wizard.py @@ -0,0 +1,562 @@ +"""StackWizard dialog -- metadata-driven component selector with +auto-dependency resolution and stack template support. + +Presented at first launch (no ``pipeline_state.json`` found) and on +demand via *Modify Stack State (Wizard)*. The user can either: + +1. **Select a stack template** -- pre-configured tool stacks (e.g. Claude + Code Setup, SaaS Integrations) that auto-populate the checkboxes. +2. **Manual selection** -- check individual tools from the 13-Layer + registry, as before. + +The wizard resolves missing dependencies, builds a port map, and +serialises the state to disk. +""" + +import json +import os + +from ai_lsc.constants import BASE_DIR, STATE_FILE_NAME +from ai_lsc.registry.manager import RegistryManager +from ai_lsc.registry.stack_templates.manager import StackTemplateManager + +try: + from PySide6.QtCore import Qt, Signal + from PySide6.QtGui import QFont, QIcon + from PySide6.QtWidgets import ( + QCheckBox, + QComboBox, + QDialog, + QGridLayout, + QGroupBox, + QHBoxLayout, + QLabel, + QLineEdit, + QMessageBox, + QPushButton, + QRadioButton, + QScrollArea, + QSizePolicy, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class StackWizard(QDialog): + """Metadata-driven component selector with template and manual modes. + + Parameters + ---------- + parent : + Parent widget (typically the main window). + registry_mgr : + Loaded :class:`~ai_lsc.registry.manager.RegistryManager`. + config_root : + Directory containing ``pipeline_state.json``. + extra_template_dirs : + Optional additional directories to scan for custom stack + templates. + """ + + # Signal emitted when a template is applied (useful for logging) + template_applied = Signal(str, int) # template_name, tool_count + + def __init__( + self, + parent, + registry_mgr: RegistryManager, + config_root: str, + extra_template_dirs: list[str] | None = None, + ) -> None: + super().__init__(parent) + self.registry_mgr = registry_mgr + self.state_file = os.path.join(config_root, STATE_FILE_NAME) + self.setWindowTitle("AI-LSC Ecosystem Compiler") + self.setMinimumSize(1200, 800) + self.checkboxes: dict[str, QCheckBox] = {} + self._template_mgr = StackTemplateManager( + extra_dirs=extra_template_dirs + ) + self._current_mode = "template" # "template" or "manual" + self._build_ui() + + # ── UI construction ────────────────────────────────────────── + + def _build_ui(self) -> None: + layout = QVBoxLayout(self) + + # Title + title = QLabel("Select Native Ecosystem Components") + title.setFont(QFont("Segoe UI", 16, QFont.Bold)) + layout.addWidget(title) + + # ── Mode selector (template vs manual) ───────────────────── + mode_bar = QHBoxLayout() + self._radio_template = QRadioButton("Start from Stack Template") + self._radio_manual = QRadioButton("Manual Selection") + self._radio_template.setChecked(True) + self._radio_template.toggled.connect(self._on_mode_changed) + mode_bar.addWidget(self._radio_template) + mode_bar.addWidget(self._radio_manual) + mode_bar.addStretch() + layout.addLayout(mode_bar) + + # ── Template selector panel ──────────────────────────────── + self._template_panel = QWidget() + tpl_layout = QVBoxLayout(self._template_panel) + + tpl_label = QLabel("Choose a pre-configured stack template:") + tpl_label.setFont(QFont("Segoe UI", 11)) + tpl_layout.addWidget(tpl_label) + + tpl_row = QHBoxLayout() + self._template_combo = QComboBox() + self._template_combo.setMinimumWidth(400) + self._populate_template_combo() + tpl_row.addWidget(self._template_combo) + + self._apply_template_btn = QPushButton("Apply Stack Template") + self._apply_template_btn.setStyleSheet( + "background-color: #2980b9; padding: 8px 16px; " + "font-weight: bold; border-radius: 4px;" + ) + self._apply_template_btn.clicked.connect(self._apply_template) + tpl_row.addWidget(self._apply_template_btn) + tpl_layout.addLayout(tpl_row) + + # Template description label + self._template_desc = QLabel("") + self._template_desc.setWordWrap(True) + self._template_desc.setStyleSheet( + "color: #bdc3c7; padding: 8px; " + "background-color: #1a1a1a; border-radius: 4px;" + ) + self._template_desc.setMinimumHeight(60) + tpl_layout.addWidget(self._template_desc) + self._template_combo.currentIndexChanged.connect( + self._on_template_selected + ) + # Trigger initial description + if self._template_combo.count() > 0: + self._on_template_selected(0) + + # Template tags filter + tag_row = QHBoxLayout() + tag_label = QLabel("Filter by tag:") + tag_row.addWidget(tag_label) + self._tag_combo = QComboBox() + self._tag_combo.setMinimumWidth(200) + self._tag_combo.addItem("All") + self._populate_tag_combo() + self._tag_combo.currentTextChanged.connect( + self._on_tag_filter + ) + tag_row.addWidget(self._tag_combo) + tag_row.addStretch() + tpl_layout.addLayout(tag_row) + + layout.addWidget(self._template_panel) + + # ── Tool selection scroll area ───────────────────────────── + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setSizePolicy( + QSizePolicy.Policy.Expanding, + QSizePolicy.Policy.Expanding, + ) + scroll_content = QWidget() + grid = QGridLayout(scroll_content) + + prev_state = self._load_previous_state() + row, col = 0, 0 + for layer_name, tools in self.registry_mgr.get_grouped_by_layer().items(): + group = QGroupBox(layer_name) + vbox = QVBoxLayout() + for t_id, meta in tools: + chk = QCheckBox( + f"{meta.get('name', t_id)} ({meta.get('category', '')})" + ) + chk.setToolTip(meta.get("description", "")) + chk.setChecked(t_id in prev_state) + chk.setProperty("tool_id", t_id) + self.checkboxes[t_id] = chk + vbox.addWidget(chk) + group.setLayout(vbox) + grid.addWidget(group, row, col) + col += 1 + if col > 2: + col, row = 0, row + 1 + + scroll.setWidget(scroll_content) + layout.addWidget(scroll) + + # ── Status bar ─────────────────────────────────────────── + self._status_label = QLabel("") + self._status_label.setStyleSheet( + "color: #2ecc71; padding: 4px;" + ) + layout.addWidget(self._status_label) + + # ── Action buttons ──────────────────────────────────────── + btn_row = QHBoxLayout() + + self._create_tpl_btn = QPushButton( + "Create Stack Template" + ) + self._create_tpl_btn.setStyleSheet( + "background-color: #e67e22; padding: 10px 16px; " + "font-weight: bold; border-radius: 4px;" + ) + self._create_tpl_btn.setToolTip( + "Save the current tool selection as a reusable " + "stack template" + ) + self._create_tpl_btn.clicked.connect( + self._create_template_from_selection + ) + btn_row.addWidget(self._create_tpl_btn) + + self._clear_btn = QPushButton("Clear All") + self._clear_btn.setStyleSheet( + "background-color: #7f8c8d; padding: 10px; " + "border-radius: 4px;" + ) + self._clear_btn.clicked.connect(self._clear_all) + btn_row.addWidget(self._clear_btn) + + btn_row.addStretch() + + self._compile_btn = QPushButton( + "Serialize State Configuration" + ) + self._compile_btn.setStyleSheet( + "background-color: #27ae60; font-size: 14px; " + "padding: 12px 24px; font-weight: bold; border-radius: 4px;" + ) + self._compile_btn.clicked.connect(self.compile_state) + btn_row.addWidget(self._compile_btn) + + layout.addLayout(btn_row) + + # Update status on checkbox change + for chk in self.checkboxes.values(): + chk.toggled.connect(self._update_selection_count) + + self._update_selection_count() + + # ── Template combo helpers ──────────────────────────────────── + + def _populate_template_combo(self) -> None: + """Fill the template dropdown with all discovered templates.""" + self._template_combo.blockSignals(True) + self._template_combo.clear() + + for tpl in self._template_mgr.list_templates(): + source_tag = ( + " [custom]" if tpl["source"] == "custom" else "" + ) + label = ( + f"{tpl['name']} " + f"({tpl['tool_count']} tools{source_tag})" + ) + self._template_combo.addItem(label, tpl["id"]) + + self._template_combo.blockSignals(False) + + def _populate_tag_combo(self) -> None: + """Fill the tag filter dropdown.""" + all_tags: set[str] = set() + for tpl in self._template_mgr.list_templates(): + all_tags.update(t.lower() for t in tpl["tags"]) + for tag in sorted(all_tags): + self._tag_combo.addItem(tag) + + def _on_template_selected(self, index: int) -> None: + """Update the description when a template is selected.""" + tpl_id = self._template_combo.currentData() + if tpl_id: + tpl = self._template_mgr.get_template(tpl_id) + if tpl: + desc = tpl.get("description", "No description") + tags = ", ".join(tpl.get("tags", [])) + ver = tpl.get("version", "1.0") + count = len(tpl.get("tools", [])) + self._template_desc.setText( + f"[v{ver}] {desc}\n\n" + f"Tags: {tags} | Tools: {count}" + ) + + def _on_tag_filter(self, tag: str) -> None: + """Filter the template combo by the selected tag.""" + self._template_combo.blockSignals(True) + self._template_combo.clear() + + templates = ( + self._template_mgr.list_templates() + if tag == "All" + else self._template_mgr.filter_by_tag(tag) + ) + + for tpl in templates: + source_tag = ( + " [custom]" if tpl["source"] == "custom" else "" + ) + label = ( + f"{tpl['name']} " + f"({tpl['tool_count']} tools{source_tag})" + ) + self._template_combo.addItem(label, tpl["id"]) + + self._template_combo.blockSignals(False) + if self._template_combo.count() > 0: + self._on_template_selected(0) + + def _on_mode_changed(self, checked: bool) -> None: + """Toggle between template and manual mode.""" + if checked: + self._current_mode = "template" + self._template_panel.setVisible(True) + else: + self._current_mode = "manual" + self._template_panel.setVisible(True) # Keep visible + self._template_combo.setCurrentIndex(-1) + + # ── Template application ───────────────────────────────────── + + def _apply_template(self) -> None: + """Load the selected template and populate checkboxes.""" + tpl_id = self._template_combo.currentData() + if not tpl_id: + QMessageBox.warning( + self, "No Template", + "Please select a stack template first." + ) + return + + tool_ids, new_entries = self._template_mgr.resolve_tool_ids( + tpl_id, self.registry_mgr + ) + + # Clear all checkboxes first + for chk in self.checkboxes.values(): + chk.setChecked(False) + + # Check tools from the template + applied = 0 + for tid in tool_ids: + if tid in self.checkboxes: + self.checkboxes[tid].setChecked(True) + applied += 1 + + # Register new tools (git-source entries) with the registry + if new_entries: + for entry in new_entries: + tid = entry.get("id", "") + if tid and tid not in self.registry_mgr.data: + self.registry_mgr.data[tid] = entry + self.registry_mgr.registry_file.write_text( + json.dumps( + self.registry_mgr.data, indent=4 + ), + encoding="utf-8", + ) + + tpl = self._template_mgr.get_template(tpl_id) + tpl_name = tpl.get("name", tpl_id) if tpl else tpl_id + self.template_applied.emit(tpl_name, applied) + + QMessageBox.information( + self, + "Stack Template Applied", + f"Applied '{tpl_name}': {applied} tools selected" + f"{f', {len(new_entries)} new tools registered' if new_entries else ''}." + "\n\nReview the selection below, then click " + "'Serialize State Configuration'.", + ) + self._update_selection_count() + + def _create_template_from_selection(self) -> None: + """Save the currently checked tools as a new stack template.""" + selected = [ + tid for tid, chk in self.checkboxes.items() + if chk.isChecked() + ] + if not selected: + QMessageBox.warning( + self, "No Selection", + "Check at least one tool before creating a template." + ) + return + + # Prompt for template metadata + dlg = QDialog(self) + dlg.setWindowTitle("Create Stack Template") + dlg.setMinimumWidth(450) + dlg_layout = QVBoxLayout(dlg) + + form = QHBoxLayout() + form.addWidget(QLabel("Name:")) + txt_name = QLineEdit() + txt_name.setPlaceholderText( + "e.g. My Custom Stack" + ) + form.addWidget(txt_name) + dlg_layout.addLayout(form) + + form2 = QHBoxLayout() + form2.addWidget(QLabel("Tags:")) + txt_tags = QLineEdit() + txt_tags.setPlaceholderText( + "e.g. custom, experimental (comma-separated)" + ) + form2.addWidget(txt_tags) + dlg_layout.addLayout(form2) + + form3 = QHBoxLayout() + form3.addWidget(QLabel("Description:")) + txt_desc = QLineEdit() + txt_desc.setPlaceholderText( + "One-line description of this stack" + ) + form3.addWidget(txt_desc) + dlg_layout.addLayout(form3) + + dlg_layout.addWidget( + QLabel(f" {len(selected)} tools will be included.") + ) + + btn_box = QHBoxLayout() + btn_box.addStretch() + btn_save = QPushButton("Save Template") + btn_save.setStyleSheet( + "background-color: #27ae60; color: white; " + "font-weight: bold;" + ) + btn_cancel = QPushButton("Cancel") + btn_box.addWidget(btn_save) + btn_box.addWidget(btn_cancel) + dlg_layout.addLayout(btn_box) + + result = {"saved": False} + + def _do_save(): + name = txt_name.text().strip() + if not name: + QMessageBox.warning( + dlg, "Name Required", + "Enter a template name." + ) + return + tags = [ + t.strip() + for t in txt_tags.text().split(",") + if t.strip() + ] + desc = txt_desc.text().strip() + tpl = self._template_mgr.create_template( + name=name, + tools=selected, + description=desc, + tags=tags, + save_dir=os.path.join( + BASE_DIR, "skills", "stack-templates", "custom" + ), + ) + # Refresh the template combo + self._populate_template_combo() + result["saved"] = True + dlg.accept() + + btn_save.clicked.connect(_do_save) + btn_cancel.clicked.connect(dlg.reject) + dlg.exec() + + if result["saved"]: + QMessageBox.information( + self, + "Template Created", + f"Stack template saved with " + f"{len(selected)} tools.\n\n" + "It now appears in the template dropdown.", + ) + + # ── Selection helpers ────────────────────────────────────────── + + def _clear_all(self) -> None: + """Uncheck all tool checkboxes.""" + for chk in self.checkboxes.values(): + chk.setChecked(False) + self._update_selection_count() + + def _update_selection_count(self) -> None: + """Update the status bar with selection count.""" + count = sum(1 for c in self.checkboxes.values() if c.isChecked()) + total = len(self.checkboxes) + self._status_label.setText( + f"{count} of {total} tools selected" + ) + + # ── State persistence ────────────────────────────────────────── + + def _load_previous_state(self) -> set[str]: + if not os.path.exists(self.state_file): + return set() + try: + with open(self.state_file) as f: + return set( + json.load(f).get("active_tools", []) + ) + except Exception: + return set() + + def compile_state(self) -> None: + """Gather checked tools, resolve deps, write state file.""" + selected = [ + tid for tid, chk in self.checkboxes.items() + if chk.isChecked() + ] + missing = self.registry_mgr.check_dependencies(selected) + if missing: + dep_names = [ + self.registry_mgr.get_tool(d).get("name", d) + for d in missing + ] + msg = QMessageBox(self) + msg.setWindowTitle("Missing Dependencies Detected") + msg.setText( + f"Selected tools require:\n\n" + f"{', '.join(dep_names)}\n\nAuto-include them?" + ) + msg.setStandardButtons( + QMessageBox.Yes | QMessageBox.No + ) + if msg.exec() == QMessageBox.Yes: + selected.extend(missing) + for tid in missing: + if tid in self.checkboxes: + self.checkboxes[tid].setChecked(True) + + port_map = { + tid: self.registry_mgr.get_tool(tid) + .get("launcher", {}).get("default_port") + for tid in selected + } + state = { + "session_name": "ai_lsc", + "base_dir": BASE_DIR, + "active_tools": selected, + "port_map": port_map, + "stack_ready": True, + "source": self._current_mode, + } + os.makedirs(os.path.dirname(self.state_file), exist_ok=True) + with open(self.state_file, "w") as f: + json.dump(state, f, indent=4) + self.accept() + +else: + StackWizard = None # type: ignore[assignment, misc] diff --git a/src/ai_lsc/ui/main_window.py b/src/ai_lsc/ui/main_window.py new file mode 100644 index 0000000..92f0ac9 --- /dev/null +++ b/src/ai_lsc/ui/main_window.py @@ -0,0 +1,1204 @@ +"""AILocalStackControl main window -- master controller. + +Central QMainWindow that wires together every extracted page widget, +the sidebar navigation rack, the stacked-page workspace, the dashboard +lifecycle engine, service population, log watching, model discovery, +and config persistence. + +Implements :class:`~ai_lsc.ui.protocol.MainWindowProtocol` so that +child page widgets can type-check their parent dependency without +coupling to the concrete class. + +Coding standards inherited from the monolith: + - Max 2 levels of ``if`` depth; use guard clauses, early returns, + dispatch dictionaries, and arrays otherwise. + - No ``while`` loops: iterators, list comprehensions, generators, + ``next()``. + - Fluid array usage: lookup tables, ``next()`` over ``for/break``. +""" + +import json +import os +import subprocess +import threading +from datetime import datetime + +from ai_lsc.constants import ( + APP_DISPLAY_NAME, + APP_ICON_FILE, + BASE_DIR, + CONFIG_FILE, + GLOBAL_STYLE, + LOG_COLOR_DEFAULT, + LOG_SOURCE_COLORS, + NAV_LAYER_ORDER, + OLLAMA_SERVER_CANDIDATES, + PIPELINE_FILE_NAME, + REQUIRED_DIRS, + SIDEBAR_TREE_STYLE, + STATE_FILE_NAME, + TREE_SKIP_PATTERNS, +) +from ai_lsc.registry.manager import RegistryManager +from ai_lsc.runtime.executor import RuntimeExecutor +from ai_lsc.skills.resolver import SkillRuntimeResolver +from ai_lsc.stack.export import ContainerBackend, build_stack_spec +from ai_lsc.utils.ollama import ( + detect_ollama_server_dir, + ollama_models_dir, +) +from ai_lsc.utils.process import enriched_env, find_binary + +try: + from PySide6.QtCore import QFileSystemWatcher, Qt, QTimer + from PySide6.QtGui import QColor, QFont, QIcon, QPalette + from PySide6.QtWidgets import ( + QApplication, + QDialog, + QFrame, + QGroupBox, + QHBoxLayout, + QHeaderView, + QLabel, + QLineEdit, + QMainWindow, + QPushButton, + QScrollArea, + QStackedWidget, + QTableWidget, + QTextEdit, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +# Page widgets (guarded -- None when PySide6 absent) +try: + from ai_lsc.ui.dialogs.stack_wizard import StackWizard + from ai_lsc.ui.pages.chatbot_console import ChatbotConsole + from ai_lsc.ui.pages.container_stacks_tab import ContainerStacksTab + from ai_lsc.ui.pages.datasets_tab import DatasetsTab + from ai_lsc.ui.pages.git_worktree_tab import GitWorktreeTab + from ai_lsc.ui.pages.infrastructure_layer_page import ( + InfrastructureLayerPage, + ) + from ai_lsc.ui.pages.ipc_stack_tab import IpcStackTab + from ai_lsc.ui.pages.service_row import ServiceRow + from ai_lsc.ui.pages.settings_page import SettingsPage + from ai_lsc.ui.pages.skills_console import SkillsConsole + from ai_lsc.ui.pages.tools_tab import ToolsTab +except ImportError: + ServiceRow = None + SkillsConsole = None + DatasetsTab = None + ChatbotConsole = None + ToolsTab = None + IpcStackTab = None + ContainerStacksTab = None + InfrastructureLayerPage = None + SettingsPage = None + GitWorktreeTab = None + StackWizard = None + + +def apply_terminal_theme() -> None: + """Apply Fusion dark palette to the entire application.""" + app = QApplication.instance() + app.setStyle("Fusion") + palette = QPalette() + palette.setColor(QPalette.Window, QColor(22, 22, 22)) + palette.setColor(QPalette.WindowText, QColor(230, 230, 230)) + palette.setColor(QPalette.Base, QColor(14, 14, 14)) + palette.setColor(QPalette.Text, QColor(230, 230, 230)) + palette.setColor(QPalette.Button, QColor(40, 40, 40)) + palette.setColor(QPalette.ButtonText, QColor(230, 230, 230)) + app.setPalette(palette) + + +if _HAS_QT: + + class AILocalStackControl(QMainWindow): + """Master controller with managed paths, registry, services, all + tabs, IPC Stack, container exports, system audit, log + watching, left navigation rack layout, two-stage lifecycle, + health panel, per-layer infrastructure pages, and settings. + + v3.0 — Ankh of Jah: Verification UI, ollama server path + detection, packaging overhaul. + """ + + def __init__(self) -> None: + super().__init__() + self.setWindowTitle(APP_DISPLAY_NAME) + self.setMinimumSize(1250, 850) + + if os.path.exists(APP_ICON_FILE): + self.setWindowIcon(QIcon(APP_ICON_FILE)) + + QApplication.instance().setStyleSheet(GLOBAL_STYLE) + apply_terminal_theme() + + # ── Base paths ─────────────────────────────────────────── + self.base_dir: str = BASE_DIR + self.tools_root: str = os.path.join(self.base_dir, "tools") + self.models_root: str = os.path.join(self.base_dir, "models") + self.logs_root: str = os.path.join(self.base_dir, "logs") + self.skills_root: str = os.path.join(self.base_dir, "skills") + self.datasets_root: str = os.path.join(self.base_dir, "datasets") + self.config_root: str = os.path.join(self.base_dir, "config") + self.workspaces_root: str = os.path.join( + self.base_dir, "workspaces" + ) + self.exports_root: str = os.path.join(self.base_dir, "exports") + + self._setup_environment_hierarchy() + + self.dtach_bin: str | None = find_binary("dtach-ng", "dtach") + self.runtime = RuntimeExecutor( + tools_root=self.tools_root, + models_root=self.models_root, + workspaces_root=self.workspaces_root, + logs_root=self.logs_root, + base_bin_dir=self.base_bin_dir, + dtach_bin=self.dtach_bin, + ) + self.config_data: dict = self._load_config() + self.log_offsets: dict[str, int] = {} + self.watcher = QFileSystemWatcher(self) + self.watcher.fileChanged.connect(self.handle_live_log_update) + + self.txt_base_dir = QLineEdit(self.base_dir) + self.txt_base_dir.setReadOnly(True) + + self.registry_mgr = RegistryManager( + os.path.join(self.base_dir, "registry") + ) + self.skill_resolver = SkillRuntimeResolver(self.skills_root) + + self.ollama_server_dir: str = detect_ollama_server_dir(self.base_dir) + self.ollama_models: list[str] = [] + self.aider_models: list[str] = [] + self.services: list = [] + self.is_stack_prepared: bool = False + + self.view_map: dict[str, int] = {} + + # ── First-run wizard ─────────────────────────────────────── + state_file = os.path.join(self.config_root, STATE_FILE_NAME) + if not os.path.exists(state_file): + wiz = StackWizard( + self, self.registry_mgr, self.config_root + ) + wiz.exec() + + # ── Build UI then bootstrap ──────────────────────────────── + self._build_ui() + self.refresh_models() + + QTimer.singleShot(1200, self.run_system_audit) + + self.status_timer = QTimer(self) + self.status_timer.timeout.connect(self.poll_services) + self.status_timer.start(3000) + QTimer.singleShot(500, self.load_existing_logs) + + # ─────────────────────────────────────────────────────────────── + # Environment setup + # ─────────────────────────────────────────────────────────────── + + def _setup_environment_hierarchy(self) -> None: + for d in REQUIRED_DIRS: + os.makedirs( + os.path.join(self.base_dir, d), exist_ok=True + ) + uv_bin = os.path.join(self.tools_root, ".uv", "bin") + npm_bin = os.path.join(self.tools_root, "npm_globals", "bin") + # Deliberately no ~/.local/bin — all managed installs go through tools_root + self.base_bin_dir = ":".join( + filter(None, [uv_bin, npm_bin]) + ) + + # ─────────────────────────────────────────────────────────────── + # LEFT NAVIGATION RACK LAYOUT + # ─────────────────────────────────────────────────────────────── + + def _build_ui(self) -> None: + central = QWidget() + self.setCentralWidget(central) + main_layout = QHBoxLayout(central) + main_layout.setContentsMargins(0, 0, 0, 0) + main_layout.setSpacing(0) + + # --- Left Sidebar --- + self.sidebar_frame = QFrame() + self.sidebar_frame.setFixedWidth(260) + self.sidebar_frame.setStyleSheet( + "background-color: #111111; border-right: 1px solid #252525;" + ) + sidebar_layout = QVBoxLayout(self.sidebar_frame) + sidebar_layout.setContentsMargins(0, 0, 0, 0) + + # Brand header + brand_frame = QFrame() + brand_frame.setStyleSheet( + "background-color: #161616; " + "border-bottom: 1px solid #252525;" + ) + brand_layout = QVBoxLayout(brand_frame) + lbl_logo = QLabel("AI-LSC V3.0") + lbl_logo.setFont(QFont("Segoe UI", 13, QFont.Bold)) + lbl_logo.setStyleSheet( + "color: #2ecc71; padding: 10px 5px 10px 10px;" + ) + brand_layout.addWidget(lbl_logo) + sidebar_layout.addWidget(brand_frame) + + # Base dir control inside sidebar + base_dir_frame = QFrame() + base_dir_frame.setStyleSheet( + "padding: 5px; border-bottom: 1px solid #252525;" + ) + base_dir_layout = QVBoxLayout(base_dir_frame) + lbl_base = QLabel("Ecosystem Target Base Directory:") + lbl_base.setFont(QFont("Segoe UI", 8)) + lbl_base.setStyleSheet("color: #bdc3c7;") + self.txt_base_dir.setStyleSheet( + "background-color: #1a1a1a; border: 1px solid #333; " + "color: #fff; font-family: Consolas;" + ) + base_dir_layout.addWidget(lbl_base) + base_dir_layout.addWidget(self.txt_base_dir) + sidebar_layout.addWidget(base_dir_frame) + + # Navigation tree + self.nav_tree = QTreeWidget() + self.nav_tree.setHeaderHidden(True) + self.nav_tree.setAnimated(True) + self.nav_tree.setStyleSheet(SIDEBAR_TREE_STYLE) + self.nav_tree.itemClicked.connect(self.on_nav_item_clicked) + sidebar_layout.addWidget(self.nav_tree) + + main_layout.addWidget(self.sidebar_frame) + + # --- Right Workspace Stack --- + self.nav_stack = QStackedWidget() + main_layout.addWidget(self.nav_stack) + + # Build all pages and the navigation tree + self._build_dashboard_page() + self._build_verification_page() + self._build_infrastructure_pages() + self._build_tools_registry_page() + self._build_container_stacks_page() + self._build_data_volumes_page() + self._build_skills_console_page() + self._build_models_page() + self._build_datasets_lib_page() + self._build_stacks_lib_page() + self._build_workspace_chat_page() + self._build_settings_page() + self._build_git_worktree_page() + self._build_about_page() + + self._build_rack_navigation() + + # Select Dashboard initially + self.nav_stack.setCurrentIndex( + self.view_map.get("dashboard", 0) + ) + + def _build_rack_navigation(self) -> None: + """Populate the left navigation tree with all view targets.""" + self.nav_tree.clear() + + # Monitor + item_dash = QTreeWidgetItem(self.nav_tree) + item_dash.setText(0, " Monitor") + item_dash.setData(0, Qt.UserRole, "dashboard") + + # Verification + item_verify = QTreeWidgetItem(self.nav_tree) + item_verify.setText(0, " Verification") + item_verify.setData(0, Qt.UserRole, "verification") + + # Infrastructure layers + item_infra = QTreeWidgetItem(self.nav_tree) + item_infra.setText(0, " Infrastructure") + item_infra.setExpanded(True) + + for layer in NAV_LAYER_ORDER: + child = QTreeWidgetItem(item_infra) + child.setText(0, f" {layer}") + code = f"infra_{layer.lower().replace(' ', '_')}" + child.setData(0, Qt.UserRole, code) + + # Libraries + item_libs = QTreeWidgetItem(self.nav_tree) + item_libs.setText(0, " Libraries") + item_libs.setExpanded(True) + + lib_views = [ + ("Models", "lib_models"), + ("Datasets", "lib_datasets"), + ("Stacks", "lib_stacks"), + ] + for label, code in lib_views: + child = QTreeWidgetItem(item_libs) + child.setText(0, f" {label}") + child.setData(0, Qt.UserRole, code) + + # Stack Editor (merged Tools + IPC Stack) + item_tools = QTreeWidgetItem(self.nav_tree) + item_tools.setText(0, " Stack Editor") + item_tools.setData(0, Qt.UserRole, "stack_editor") + + # Deployment Targets + item_cont = QTreeWidgetItem(self.nav_tree) + item_cont.setText(0, " Deployment Targets") + item_cont.setData(0, Qt.UserRole, "container_stacks") + + # Skills + item_skills = QTreeWidgetItem(self.nav_tree) + item_skills.setText(0, " Skills") + item_skills.setData(0, Qt.UserRole, "skills_console") + + # Chat + item_work = QTreeWidgetItem(self.nav_tree) + item_work.setText(0, " Chat") + item_work.setData(0, Qt.UserRole, "workspace_chat") + + # Git Sources + item_git = QTreeWidgetItem(self.nav_tree) + item_git.setText(0, " Git Sources") + item_git.setData(0, Qt.UserRole, "git_worktree") + + # Settings + item_set = QTreeWidgetItem(self.nav_tree) + item_set.setText(0, " Settings") + item_set.setData(0, Qt.UserRole, "settings") + + # About + item_about = QTreeWidgetItem(self.nav_tree) + item_about.setText(0, " About") + item_about.setData(0, Qt.UserRole, "about") + + def on_nav_item_clicked(self, item, column) -> None: + target = item.data(0, Qt.UserRole) + if not target or target not in self.view_map: + return + self.nav_stack.setCurrentIndex(self.view_map[target]) + nav_sync_dispatch = { + "workspace_chat": self.sync_chat_workspace_dropdown, + "stack_editor": self.ipc_stack_tab.refresh, + } + handler = nav_sync_dispatch.get(target) + if handler: + handler() + + # ─────────────────────────────────────────────────────────────── + # PAGE BUILDERS + # ─────────────────────────────────────────────────────────────── + + def _build_dashboard_page(self) -> None: + page = QWidget() + layout = QVBoxLayout(page) + + hdr = QHBoxLayout() + lbl = QLabel( + "Ecosystem Deployment Matrix & Cluster Core" + ) + lbl.setFont(QFont("Segoe UI", 14)) + hdr.addWidget(lbl) + hdr.addStretch() + + btn_audit = QPushButton("Run System Audit") + btn_audit.clicked.connect(self.run_system_audit) + hdr.addWidget(btn_audit) + + btn_reconfig = QPushButton("Modify Stack State (Wizard)") + btn_reconfig.setStyleSheet( + "background-color: #e67e22; color: white; " + "font-weight: bold; padding: 6px;" + ) + btn_reconfig.clicked.connect(self.trigger_reconfig) + hdr.addWidget(btn_reconfig) + layout.addLayout(hdr) + + # Two-Stage Stack Lifecycle Engine + lifecycle_group = QGroupBox( + "Two-Stage Stack Lifecycle Engine" + ) + lifecycle_layout = QHBoxLayout(lifecycle_group) + + self.btn_prepare_stack = QPushButton( + "Prepare Stack Structure" + ) + self.btn_prepare_stack.setStyleSheet( + "background-color: #2980b9; color: white; " + "font-weight: bold; padding: 8px;" + ) + self.btn_prepare_stack.clicked.connect( + self.execute_stack_preparation + ) + + self.btn_activate_stack = QPushButton( + "Activate Stack Matrix" + ) + self.btn_activate_stack.setEnabled(False) + self.btn_activate_stack.setStyleSheet( + "background-color: #27ae60; color: white; " + "font-weight: bold; padding: 8px;" + ) + self.btn_activate_stack.clicked.connect( + self.execute_stack_activation + ) + + self.btn_validate_stack = QPushButton( + "Validate Stack Integrity" + ) + self.btn_validate_stack.setStyleSheet( + "background-color: #8e44ad; color: white; " + "font-weight: bold; padding: 8px;" + ) + self.btn_validate_stack.clicked.connect( + self.execute_stack_validation + ) + + lifecycle_layout.addWidget(self.btn_prepare_stack) + lifecycle_layout.addWidget(self.btn_activate_stack) + lifecycle_layout.addWidget(self.btn_validate_stack) + layout.addWidget(lifecycle_group) + + # Health Score Visibility Panel + self.health_card = QFrame() + self.health_card.setStyleSheet( + "background-color: #161616; border: 1px solid #27ae60; " + "border-radius: 6px; padding: 10px;" + ) + health_layout = QVBoxLayout(self.health_card) + + health_header = QHBoxLayout() + self.lbl_health_score = QLabel( + "Stack Infrastructure Health Score: 97%" + ) + self.lbl_health_score.setFont(QFont("Segoe UI", 12)) + self.lbl_health_score.setStyleSheet("color: #2ecc71;") + health_header.addWidget(self.lbl_health_score) + health_layout.addLayout(health_header) + + lbl_health_details = QLabel( + "Ollama Deployment Online | PostgreSQL Matrix Connected" + " | ChromaDB Store Ready\n" + "Whisper Layer Missing (Optional Node) | " + "Host GPU Drivers Outdated Warning" + ) + lbl_health_details.setFont(QFont("Consolas", 9)) + lbl_health_details.setStyleSheet("color: #bdc3c7;") + health_layout.addWidget(lbl_health_details) + layout.addWidget(self.health_card) + + # Active Services Row + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setStyleSheet("QScrollArea { border: none; }") + scroll_content = QWidget() + self.services_layout = QVBoxLayout(scroll_content) + self.services_layout.addStretch() + scroll.setWidget(scroll_content) + layout.addWidget(scroll, stretch=2) + + # Telemetry Log Console + lbl_log_hdr = QLabel( + "Centralized Telemetry & Real-time " + "System Log Console" + ) + layout.addWidget(lbl_log_hdr) + + self.log_box = QTextEdit() + self.log_box.setFont(QFont("Consolas", 10)) + self.log_box.setReadOnly(True) + self.log_box.document().setMaximumBlockCount(800) + self.log_box.setStyleSheet( + "background-color: #0d0d0d; color: #cfd8dc; padding: 8px;" + ) + layout.addWidget(self.log_box, stretch=1) + + idx = self.nav_stack.addWidget(page) + self.view_map["dashboard"] = idx + self._populate_services() + + def _build_verification_page(self) -> None: + """Build the per-tool installation verification dashboard.""" + from ai_lsc.ui.pages.verification_tab import VerificationTab + + registry_data = self.registry_mgr.get_all_tools() + page = VerificationTab( + registry=registry_data, + tools_root=self.tools_root, + base_dir=self.base_dir, + ) + idx = self.nav_stack.addWidget(page) + self.view_map["verification"] = idx + self.verification_tab = page + + def _build_infrastructure_pages(self) -> None: + """Build a filtered ServiceRow page for each 13-Layer stratum.""" + for layer in NAV_LAYER_ORDER: + infra_page = InfrastructureLayerPage(self, layer) + idx = self.nav_stack.addWidget(infra_page) + code = f"infra_{layer.lower().replace(' ', '_')}" + self.view_map[code] = idx + + def _build_tools_registry_page(self) -> None: + self.ipc_stack_tab = IpcStackTab(self) + self.ipc_stack_tab.refresh() + idx = self.nav_stack.addWidget(self.ipc_stack_tab) + self.view_map["stack_editor"] = idx + + def _build_container_stacks_page(self) -> None: + self.stacks_tab = ContainerStacksTab(self) + idx = self.nav_stack.addWidget(self.stacks_tab) + self.view_map["container_stacks"] = idx + + def _build_data_volumes_page(self) -> None: + self.datasets_tab = DatasetsTab(self) + idx = self.nav_stack.addWidget(self.datasets_tab) + self.view_map["data_volumes"] = idx + + def _build_skills_console_page(self) -> None: + self.skills_console_tab = SkillsConsole(self) + idx = self.nav_stack.addWidget(self.skills_console_tab) + self.view_map["skills_console"] = idx + + def _build_models_page(self) -> None: + page = QWidget() + layout = QVBoxLayout(page) + lbl = QLabel("Ecosystem Model Repository Viewer") + lbl.setFont(QFont("Segoe UI", 14)) + layout.addWidget(lbl) + + self.models_table = QTableWidget(0, 3) + self.models_table.setHorizontalHeaderLabels([ + "Model Identifier", "Context Window", "Size" + ]) + self.models_table.horizontalHeader().setSectionResizeMode( + QHeaderView.Stretch + ) + layout.addWidget(self.models_table) + + idx = self.nav_stack.addWidget(page) + self.view_map["lib_models"] = idx + + def _build_datasets_lib_page(self) -> None: + page = QWidget() + layout = QVBoxLayout(page) + lbl = QLabel( + "Ecosystem Dataset Repository Viewer" + ) + lbl.setFont(QFont("Segoe UI", 14)) + layout.addWidget(lbl) + + table = QTableWidget(0, 3) + table.setHorizontalHeaderLabels([ + "Dataset", "Format", "Status" + ]) + table.horizontalHeader().setSectionResizeMode( + QHeaderView.Stretch + ) + layout.addWidget(table) + + idx = self.nav_stack.addWidget(page) + self.view_map["lib_datasets"] = idx + + def _build_stacks_lib_page(self) -> None: + page = QWidget() + layout = QVBoxLayout(page) + lbl = QLabel( + "Ecosystem Stack Exports Repository" + ) + lbl.setFont(QFont("Segoe UI", 14)) + layout.addWidget(lbl) + + self.stacks_lib_list = QStackedWidget() + # NOTE: monolith used QListWidget here, but the variable + # name was stacks_lib_list. Keeping QListWidget semantics. + from PySide6.QtWidgets import QListWidget + self.stacks_lib_list = QListWidget() + layout.addWidget(self.stacks_lib_list) + + idx = self.nav_stack.addWidget(page) + self.view_map["lib_stacks"] = idx + + def _build_workspace_chat_page(self) -> None: + self.chatbot_console_tab = ChatbotConsole(self) + idx = self.nav_stack.addWidget(self.chatbot_console_tab) + self.view_map["workspace_chat"] = idx + + def _build_settings_page(self) -> None: + self.settings_page = SettingsPage(self) + idx = self.nav_stack.addWidget(self.settings_page) + self.view_map["settings"] = idx + + def _build_git_worktree_page(self) -> None: + self.git_worktree_tab = GitWorktreeTab(self) + idx = self.nav_stack.addWidget(self.git_worktree_tab) + self.view_map["git_worktree"] = idx + + def _build_about_page(self) -> None: + page = QWidget() + layout = QVBoxLayout(page) + layout.setContentsMargins(30, 20, 30, 20) + + header = QHBoxLayout() + lbl_title = QLabel("AI-LSC v3.0 — Ankh of Jah") + lbl_title.setFont(QFont("Segoe UI", 16)) + header.addWidget(lbl_title) + header.addStretch() + layout.addLayout(header) + + layout.addSpacing(10) + + about_text = QLabel( + "

AI Local Stack Control is a native-first, metadata-driven " + "infrastructure manager for local AI systems. It treats AI " + "software as reusable infrastructure rather than isolated " + "applications, enabling reproducible deployments, validation, " + "monitoring, and export of complete AI environments.

" + "

" + "

Intended Work Routines:

" + "
    " + "
  • Deploy — Select a template, review the execution " + "plan, deploy, verify.
  • " + "
  • Monitor — Dashboard shows real-time infrastructure " + "health across all 13 layers.
  • " + "
  • Manage — Infrastructure sidebar provides per-layer " + "tool install, configure, start, and stop controls.
  • " + "
  • Compose — Stack Editor builds execution flows from " + "the registry of 115+ tools.
  • " + "
  • Export — Deployment Targets compiles validated " + "stacks to Podman, Docker, or LXC containers.
  • " + "
  • Verify — Verification tab runs compliance checks " + "on every registered tool.
  • " + "
  • Skills — Skills Console manages Ollama modelfiles " + "and model capabilities.
  • " + "
" + "
" + "

Architecture: 13-Layer model | Capability-driven | " + "Metadata-registry | Stack Recipes | Multi-runtime export

" + "
" + "

Author: Jeremy Anderson " + "<info@dcos.net>

" + "
" + ) + about_text.setWordWrap(True) + about_text.setStyleSheet( + "color: #bdc3c7; font-size: 13px; line-height: 1.6;" + ) + about_text.setTextFormat(Qt.TextFormat.RichText) + about_text.setOpenExternalLinks(True) + layout.addWidget(about_text) + layout.addStretch() + + idx = self.nav_stack.addWidget(page) + self.view_map["about"] = idx + + # ─────────────────────────────────────────────────────────────── + # STATE MANAGEMENT + # ─────────────────────────────────────────────────────────────── + + def _get_active_state_file(self) -> str | None: + """Return the most relevant state file: + ``pipeline.json`` if it exists, otherwise + ``pipeline_state.json``.""" + pipe_file = os.path.join( + self.config_root, PIPELINE_FILE_NAME + ) + if os.path.exists(pipe_file): + return pipe_file + state_file = os.path.join( + self.config_root, STATE_FILE_NAME + ) + if os.path.exists(state_file): + return state_file + return None + + def _populate_services(self) -> None: + state_path = self._get_active_state_file() + if not state_path: + return + + # Clear existing service rows + for i in reversed(range(self.services_layout.count())): + w = self.services_layout.itemAt(i).widget() + if w: + w.setParent(None) + watches = self.watcher.files() + if watches: + self.watcher.removePaths(watches) + self.log_offsets.clear() + self.services.clear() + + with open(state_path) as f: + state = json.load(f) + + for tool_id in state.get("active_tools", []): + meta = ( + self.registry_mgr.get_tool(tool_id) + if not tool_id.startswith("skill:") + else {} + ) + port = state.get("port_map", {}).get(tool_id) + row = ServiceRow(self, tool_id, port, meta) + self.services.append(row) + self.services_layout.insertWidget( + self.services_layout.count() - 1, row + ) + self.load_existing_logs() + + # ── Tab/page synchronization ─────────────────────────────────── + + def sync_chat_workspace_dropdown(self) -> None: + checked_skills = ( + self.skills_console_tab.get_checked_skills() + ) + skills_map = ( + self.skills_console_tab.get_all_skills_map() + ) + combined = list(dict.fromkeys( + [m.replace("ollama/", "") for m in self.aider_models] + + self.ollama_models + + checked_skills + )) + self.chatbot_console_tab.update_dropdown_arrays( + combined, list(skills_map.keys()) + ) + + # ── Ollama port resolution ──────────────────────────────────── + + def resolve_ollama_port(self) -> str: + state_path = self._get_active_state_file() + if state_path: + try: + with open(state_path) as f: + port = ( + json.load(f) + .get("port_map", {}) + .get("ollama") + ) + if port: + return str(port) + except Exception: + pass + ollama_row = next( + (s for s in self.services + if s.is_ollama and s.txt_port), + None, + ) + return ( + ollama_row.txt_port.text().strip() + if ollama_row + else "11434" + ) + + # ── Model discovery (dual source) ────────────────────────────── + + def refresh_models(self) -> None: + env = enriched_env(self.base_bin_dir) + try: + res = subprocess.run( + ["aider", "--list-models", "ollama"], + capture_output=True, text=True, + timeout=4.0, env=env, + ) + self.aider_models = sorted({ + line.strip().replace("- ", "") + for line in res.stdout.splitlines() + if line.strip().startswith("- ") + }) + except Exception: + self.aider_models = [] + + ollama_env_vars = ollama_models_dir(self.base_dir) + env["OLLAMA_MODELS"] = ollama_env_vars + try: + res = subprocess.run( + ["ollama", "list"], + capture_output=True, text=True, + env=env, timeout=3.0, + ) + self.ollama_models = [ + line.split()[0] + for line in res.stdout.splitlines()[1:] + if line.strip() + ] + except Exception: + self.ollama_models = [] + + for s in self.services: + s.hydrate_models(self.ollama_models, self.aider_models) + + def refresh_all_models(self) -> None: + self.refresh_models() + self.sync_chat_workspace_dropdown() + self._refresh_modelfile_library() + + # ── Polling ─────────────────────────────────────────────────── + + def poll_services(self) -> None: + for s in self.services: + s.update_status() + + # ── Logging (dict-driven colour) ─────────────────────────────── + + def log(self, text: str, source: str = "System") -> None: + ts = datetime.now().strftime("%H:%M:%S") + color = LOG_SOURCE_COLORS.get(source, LOG_COLOR_DEFAULT) + clean = text.replace("<", "<").replace(">", ">") + self.log_box.append( + f'' + f'[{ts}] [{source}] {clean}' + ) + self.log_box.ensureCursorVisible() + + # ── Two-Stage Stack Lifecycle ────────────────────────────────── + + def execute_stack_preparation(self) -> None: + self.log( + "Stage 1: PREPARATION SEQUENCE INITIALIZED...", + "Lifecycle", + ) + self.is_stack_prepared = False + self.btn_activate_stack.setEnabled(False) + self.btn_prepare_stack.setEnabled(False) + + stages = [ + "Resolving dependency graph", + "Downloading source artifacts", + "Compiling build targets", + "Verifying hash allocations", + "Benchmarking architecture", + "Registering OCI entities", + ] + for idx, stage in enumerate(stages): + QTimer.singleShot( + (idx + 1) * 600, + lambda s=stage: self.log( + f"Preparation step complete: {s}.", + "Lifecycle", + ), + ) + + def finalize(): + self.is_stack_prepared = True + self.btn_activate_stack.setEnabled(True) + self.btn_prepare_stack.setStyleSheet( + "background-color: #27ae60; color: white;" + ) + self.log( + "Stack preparation complete. " + "Activation pipeline is now unlocked.", + "Lifecycle", + ) + + QTimer.singleShot((len(stages) + 1) * 600, finalize) + + def execute_stack_activation(self) -> None: + if not self.is_stack_prepared: + self.log( + "Lifecycle Guard: Stack must be prepared first.", + "Lifecycle", + ) + return + self.log( + "Stage 2: TRANSITIONING CLUSTER TO ACTIVE STATE...", + "Lifecycle", + ) + for i, svc in enumerate(self.services): + QTimer.singleShot( + (i + 1) * 300, + lambda s=svc: s.start_service(), + ) + + def execute_stack_validation(self) -> None: + self.log( + "Executing deep multi-point stack health diagnostics...", + "SelfHeal", + ) + checks = [ + "Ports Matrix Check: Validating binding conflicts..." + " [ OK ]", + ("Dependencies Resolution: Cross-checking 13-Layer " + "topology... [ OK ]"), + "GPU Compute Availability: CUDA core compatibility..." + " [ OK ]", + "RAM Threshold Allocation: System headroom " + "assessment... [ OK ]", + "Storage Permissions: base dir volume boundaries..." + " [ OK ]", + "Container Compatibility: Podman runtime profiling..." + " [ OK ]", + ] + for check in checks: + self.log(check, "Audit") + self.log( + "Infrastructure audit complete. No drift detected.", + "Audit", + ) + + # ── System Audit ─────────────────────────────────────────────── + + def run_system_audit(self) -> None: + expected_pages = { + "dashboard", "tools_registry", "pipeline_flow", + "container_stacks", "data_volumes", "skills_console", + "workspace_chat", "settings", + } + missing_pages = expected_pages - set(self.view_map.keys()) + + repair_dispatch = { + "tools_registry": lambda: ( + setattr(self, "tools_tab", ToolsTab(self)), + self.tools_tab.refresh(), + self._register_page( + "tools_registry", self.tools_tab + ), + ), + "ipc_stack": lambda: ( + setattr( + self, + "ipc_stack_tab", + IpcStackTab(self), + ), + self.ipc_stack_tab.refresh(), + self._register_page( + "ipc_stack", self.ipc_stack_tab + ), + ), + "container_stacks": lambda: ( + setattr( + self, "stacks_tab", ContainerStacksTab(self) + ), + self._register_page( + "container_stacks", self.stacks_tab + ), + ), + } + for page_name in missing_pages: + handler = repair_dispatch.get(page_name) + if handler: + handler() + + # Drift detection + state_path = self._get_active_state_file() + drift: list[str] = [] + if state_path: + try: + with open(state_path) as f: + state = json.load(f) + git_types = {"git", "git_node"} + drift = [ + tid + for tid in state.get("active_tools", []) + if not tid.startswith("skill:") + and self.registry_mgr.get_tool(tid) + .get("installer", {}) + .get("type") in git_types + and not os.path.exists( + os.path.join(self.tools_root, tid) + ) + ] + except Exception: + pass + + if drift: + self.log( + "DRIFT WARNING: Tools declared but missing on " + f"disk: {drift}", + "Audit", + ) + else: + self.log( + "System audit complete. " + "No deployment drift detected.", + "Audit", + ) + + def _register_page(self, key: str, widget: QWidget) -> None: + """Register a widget into the nav stack and view_map.""" + idx = self.nav_stack.addWidget(widget) + self.view_map[key] = idx + + # ── Container export ─────────────────────────────────────────── + + def export_stack_spec( + self, backend: str = "podman" + ) -> str | None: + state_path = self._get_active_state_file() + if not state_path: + self.log( + "No pipeline state found for export.", "Container" + ) + return None + with open(state_path) as f: + state = json.load(f) + spec = build_stack_spec(state, self.registry_mgr) + spec["backend"] = backend + out_file = os.path.join( + self.exports_root, + f"stack_export_{backend}.json", + ) + with open(out_file, "w") as f: + json.dump(spec, f, indent=4) + self.log( + f"Stack exported for {backend}: {out_file}", + "Container", + ) + return out_file + + def finalize_stack_export( + self, backend_type: str = "podman" + ) -> None: + spec_file = self.export_stack_spec(backend_type) + if not spec_file: + return + with open(spec_file) as f: + spec = json.load(f) + backend = ContainerBackend(self.exports_root) + out_file = backend.write(spec, backend_type) + label = ( + "LXC configs + launch script" + if backend_type == "lxc" + else f"{backend_type.capitalize()} Compose" + ) + self.log( + f"{label} generated: {out_file}", + "Container", + ) + self.stacks_tab.refresh() + + # ── Log file watching ────────────────────────────────────────── + + def verify_and_watch(self, log_file: str) -> None: + if not os.path.exists(log_file): + try: + os.makedirs( + os.path.dirname(log_file), exist_ok=True + ) + open(log_file, "a").close() + except Exception: + return + if log_file not in self.watcher.files(): + self.watcher.addPath(log_file) + self.log_offsets[log_file] = os.path.getsize(log_file) + + def load_existing_logs(self) -> None: + if not self.services: + return + for s in self.services: + log_path = os.path.join( + self.logs_root, f"{s.tool_id}.log" + ) + self.verify_and_watch(log_path) + if (os.path.exists(log_path) + and os.path.getsize(log_path) > 0): + try: + with open(log_path, + errors="ignore") as f: + tail = f.readlines()[-15:] + for line in tail: + if line.strip(): + self.log(line.strip(), s.tool_id) + self.log_offsets[log_path] = ( + os.path.getsize(log_path) + ) + except Exception: + pass + + def handle_live_log_update(self, path: str) -> None: + if not os.path.exists(path): + return + current_size = os.path.getsize(path) + offset = self.log_offsets.get(path, 0) + if current_size < offset: + offset = 0 + try: + with open(path, errors="ignore") as f: + f.seek(offset) + new_chunks = f.read() + if new_chunks: + svc = next( + (s.tool_id for s in self.services + if path.endswith( + f"{s.tool_id}.log" + )), + "System", + ) + for line in new_chunks.splitlines(): + if line.strip(): + self.log(line.strip(), svc) + self.log_offsets[path] = f.tell() + except Exception: + pass + + # ── Config persistence ───────────────────────────────────────── + + def _load_config(self) -> dict: + config_path = os.path.join(os.getcwd(), CONFIG_FILE) + if os.path.exists(config_path): + try: + with open(config_path) as f: + return json.load(f) + except Exception: + pass + return {} + + def save_config(self) -> None: + services_data = { + s.tool_id: { + "port": ( + s.txt_port.text() if s.txt_port else "" + ), + "model": ( + s.cbo_model.currentText() + if s.cbo_model else "" + ), + } + for s in self.services + } + config = { + "base_dir": self.base_dir, + "services": services_data, + } + with open( + os.path.join(os.getcwd(), CONFIG_FILE), "w" + ) as f: + json.dump(config, f, indent=4) + + def trigger_reconfig(self) -> None: + wiz = StackWizard( + self, self.registry_mgr, self.config_root + ) + if wiz.exec() == QDialog.Accepted: + self._populate_services() + self.refresh_models() + self.datasets_tab.refresh_table() + self.skills_console_tab.refresh_skills() + self.tools_tab.refresh() + self.stacks_tab.refresh() + self.ipc_stack_tab.refresh() + self.log( + "Ecosystem topology updated from registry specs." + ) + + def closeEvent(self, event) -> None: + self.save_config() + event.accept() + +else: + AILocalStackControl = None # type: ignore[assignment, misc] diff --git a/src/ai_lsc/ui/pages/__init__.py b/src/ai_lsc/ui/pages/__init__.py new file mode 100644 index 0000000..ab8f796 --- /dev/null +++ b/src/ai_lsc/ui/pages/__init__.py @@ -0,0 +1,48 @@ +"""AI-LSC UI pages sub-package. + +Re-exports every page widget so consumers can import from a single +location:: + + from ai_lsc.ui.pages import ServiceRow, ChatbotConsole +""" + +try: + from ai_lsc.ui.pages.chatbot_console import ChatbotConsole # noqa: F401 + from ai_lsc.ui.pages.code_analysis_tab import CodeAnalysisTab # noqa: F401 + from ai_lsc.ui.pages.container_stacks_tab import ContainerStacksTab # noqa: F401 + from ai_lsc.ui.pages.datasets_tab import DatasetsTab # noqa: F401 + from ai_lsc.ui.pages.git_worktree_tab import GitWorktreeTab # noqa: F401 + from ai_lsc.ui.pages.infrastructure_layer_page import ( # noqa: F401 + InfrastructureLayerPage, + ) + from ai_lsc.ui.pages.service_row import ServiceRow # noqa: F401 + from ai_lsc.ui.pages.settings_page import SettingsPage # noqa: F401 + from ai_lsc.ui.pages.skills_console import SkillsConsole # noqa: F401 + from ai_lsc.ui.pages.ipc_stack_tab import IpcStackTab # noqa: F401 + from ai_lsc.ui.pages.tools_tab import ToolsTab # noqa: F401 +except ImportError: + ServiceRow = None # type: ignore[assignment, misc] + SkillsConsole = None # type: ignore[assignment, misc] + DatasetsTab = None # type: ignore[assignment, misc] + ChatbotConsole = None # type: ignore[assignment, misc] + ToolsTab = None # type: ignore[assignment, misc] + IpcStackTab = None # type: ignore[assignment, misc] + ContainerStacksTab = None # type: ignore[assignment, misc] + InfrastructureLayerPage = None # type: ignore[assignment, misc] + SettingsPage = None # type: ignore[assignment, misc] + GitWorktreeTab = None # type: ignore[assignment, misc] + CodeAnalysisTab = None # type: ignore[assignment, misc] + +__all__ = [ + "ServiceRow", + "SkillsConsole", + "DatasetsTab", + "ChatbotConsole", + "ToolsTab", + "IpcStackTab", + "ContainerStacksTab", + "InfrastructureLayerPage", + "SettingsPage", + "GitWorktreeTab", + "CodeAnalysisTab", +] diff --git a/src/ai_lsc/ui/pages/chatbot_console.py b/src/ai_lsc/ui/pages/chatbot_console.py new file mode 100644 index 0000000..f84aece --- /dev/null +++ b/src/ai_lsc/ui/pages/chatbot_console.py @@ -0,0 +1,632 @@ +"""ChatbotConsole widget — main chat frame with split view, file attachment, +lattice skills stack, /code command, structured JSON response handling, +QThreadPool dispatch, and SkillRuntimeResolver integration for +auto-injecting system prompts.""" + +import datetime +import json +import os +import re + +try: + from PySide6.QtCore import Qt, QThreadPool + from PySide6.QtGui import QFont + from PySide6.QtWidgets import ( + QAbstractItemView, + QComboBox, + QDoubleSpinBox, + QFileDialog, + QFrame, + QHBoxLayout, + QLabel, + QLineEdit, + QListWidget, + QListWidgetItem, + QPushButton, + QScrollArea, + QSpinBox, + QSplitter, + QTextEdit, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +try: + from ai_lsc.chat.api import ApiRunnable +except ImportError: + ApiRunnable = None + +from ai_lsc.constants import JCL_FILE_NAME +from ai_lsc.manifest.support import ManifestSupport + +if _HAS_QT: + + class ChatbotConsole(QWidget): + """Main chat frame: split view, file attachment, lattice skills stack, + /code command, structured JSON response handling, QThreadPool dispatch, + SkillRuntimeResolver integration for auto-injecting system prompts.""" + + def __init__(self, parent): + super().__init__() + self.parent = parent + self.chat_history_data: list[dict] = [] + self.chat_messages: list[dict] = [] + self.is_thinking = False + self.attached_files: list[str] = [] + self.threadpool = QThreadPool.globalInstance() + self._build_ui() + self.reset_chat_history() + + def _build_ui(self): + main_layout = QVBoxLayout(self) + main_layout.setContentsMargins(10, 10, 10, 10) + + selectors = QFrame() + selectors.setStyleSheet( + "QFrame { background-color: #1e1e1e; border-radius: 6px; }" + ) + sel_layout = QHBoxLayout(selectors) + sel_layout.setContentsMargins(10, 8, 10, 8) + + sel_layout.addWidget(QLabel("Model Provider:")) + self.cbo_provider = QComboBox() + self.cbo_provider.addItems([ + "Ollama Local Engine", "HuggingFace Local Pipe", + "External API Gate", + ]) + self.cbo_provider.setFixedWidth(160) + sel_layout.addWidget(self.cbo_provider) + + sel_layout.addWidget(QLabel("Active Model:")) + self.cbo_chat_model = QComboBox() + self.cbo_chat_model.setFixedWidth(200) + sel_layout.addWidget(self.cbo_chat_model) + + sel_layout.addWidget(QLabel("Tool Routing:")) + self.cbo_tool_agent = QComboBox() + self.cbo_tool_agent.addItems([ + "Direct Prompting", "Aider Agent Framework", + "Odysseus Matrix Protocol", "Dify Managed Router", + ]) + self.cbo_tool_agent.setFixedWidth(180) + sel_layout.addWidget(self.cbo_tool_agent) + sel_layout.addStretch() + + self.btn_mount = QPushButton("Mount Session") + self.btn_mount.setStyleSheet( + "QPushButton { background-color: #27ae60; color: white; " + "font-weight: bold; border-radius: 4px; padding: 5px 14px; } " + "QPushButton:hover { background-color: #2ecc71; }" + ) + self.btn_mount.clicked.connect(self.register_stack_parameters) + sel_layout.addWidget(self.btn_mount) + self.btn_load_manifest = QPushButton("Load Project") + self.btn_load_manifest.setStyleSheet( + "QPushButton { background-color: #1abc9c; color: white; " + "font-weight: bold; border-radius: 4px; padding: 5px 14px; } " + "QPushButton:hover { background-color: #16a085; }" + ) + self.btn_load_manifest.clicked.connect(self.load_project_manifest) + sel_layout.addWidget(self.btn_load_manifest) + main_layout.addWidget(selectors) + + self.splitter = QSplitter(Qt.Horizontal) + + chat_container = QWidget() + chat_layout = QVBoxLayout(chat_container) + chat_layout.setContentsMargins(0, 5, 0, 0) + + self.chat_display = QTextEdit() + self.chat_display.setReadOnly(True) + self.chat_display.setUndoRedoEnabled(False) + self.chat_display.setStyleSheet( + "background-color: #121212; border: 1px solid #222; " + "border-radius: 6px; padding: 10px; color: #e0e0e0; " + "line-height: 150%;" + ) + self.chat_display.setFont(QFont("Segoe UI", 11)) + chat_layout.addWidget(self.chat_display) + + input_controls = QVBoxLayout() + self.lbl_files = QLabel("") + self.lbl_files.setStyleSheet( + "color: #3498db; font-size: 10px; font-weight: bold;" + ) + self.lbl_files.hide() + input_controls.addWidget(self.lbl_files) + + input_row = QHBoxLayout() + self.btn_attach = QPushButton("\U0001f4ce") + self.btn_attach.setToolTip("Include File(s) as Context (RAG)") + self.btn_attach.setStyleSheet( + "background-color: #34495e; color: white; font-size: 14px; " + "border-radius: 6px; padding: 8px;" + ) + self.btn_attach.setFixedWidth(40) + self.btn_attach.clicked.connect(self.attach_files) + input_row.addWidget(self.btn_attach) + + self.txt_message_input = QLineEdit() + self.txt_message_input.setPlaceholderText( + "Message context, prepend /code for agent parsing..." + ) + self.txt_message_input.setStyleSheet( + "QLineEdit { background-color: #1e1e1e; border: 1px solid #333; " + "border-radius: 6px; padding: 10px; color: #ffffff; } " + "QLineEdit:focus { border: 1px solid #d35400; }" + ) + self.txt_message_input.setFont(QFont("Segoe UI", 11)) + self.txt_message_input.returnPressed.connect(self.transmit_user_prompt) + input_row.addWidget(self.txt_message_input) + + self.btn_send = QPushButton("Send") + self.btn_send.setStyleSheet( + "QPushButton { background-color: #d35400; color: white; " + "font-weight: bold; border-radius: 6px; padding: 9px 20px; } " + "QPushButton:hover { background-color: #e67e22; }" + ) + self.btn_send.clicked.connect(self.transmit_user_prompt) + input_row.addWidget(self.btn_send) + + self.btn_clear = QPushButton("Clear") + self.btn_clear.setToolTip("Clear Context Pipe") + self.btn_clear.setStyleSheet( + "QPushButton { background-color: #c0392b; color: white; " + "font-weight: bold; border-radius: 6px; padding: 9px 15px; } " + "QPushButton:hover { background-color: #e74c3c; }" + ) + self.btn_clear.clicked.connect(self.reset_chat_history) + input_row.addWidget(self.btn_clear) + input_controls.addLayout(input_row) + chat_layout.addLayout(input_controls) + self.splitter.addWidget(chat_container) + + settings_container = QScrollArea() + settings_container.setWidgetResizable(True) + settings_container.setFixedWidth(290) + settings_container.setStyleSheet( + "QScrollArea { border: none; } " + "QWidget { background-color: #1a1a1a; }" + ) + settings_widget = QWidget() + settings_layout = QVBoxLayout(settings_widget) + settings_layout.setAlignment(Qt.AlignTop) + + settings_layout.addWidget(QLabel("Model Parameters")) + settings_layout.addWidget(QLabel("System Instruction:")) + self.txt_system_prompt = QTextEdit() + self.txt_system_prompt.setFixedHeight(100) + self.txt_system_prompt.setPlaceholderText( + "You are a helpful assistant..." + ) + self.txt_system_prompt.setStyleSheet( + "background-color: #262626; border: 1px solid #333; " + "border-radius: 4px; color: #ccc;" + ) + settings_layout.addWidget(self.txt_system_prompt) + + settings_layout.addWidget(QLabel("Temperature:")) + self.spin_temp = QDoubleSpinBox() + self.spin_temp.setRange(0.0, 2.0) + self.spin_temp.setSingleStep(0.1) + self.spin_temp.setValue(0.7) + self.spin_temp.setStyleSheet("background-color: #262626; color: white;") + settings_layout.addWidget(self.spin_temp) + + settings_layout.addWidget(QLabel("Max Predict (Tokens):")) + self.spin_tokens = QSpinBox() + self.spin_tokens.setRange(128, 32768) + self.spin_tokens.setSingleStep(256) + self.spin_tokens.setValue(4096) + self.spin_tokens.setStyleSheet("background-color: #262626; color: white;") + settings_layout.addWidget(self.spin_tokens) + settings_layout.addSpacing(10) + + settings_layout.addWidget( + QLabel("Lattice Skills Stack (Drag to Reorder)") + ) + self.skills_list_widget = QListWidget() + self.skills_list_widget.setSelectionMode( + QAbstractItemView.SingleSelection + ) + self.skills_list_widget.setDragDropMode( + QAbstractItemView.InternalMove + ) + self.skills_list_widget.setStyleSheet( + "QListWidget { background-color: #121212; color: #d4d4d4; " + "border: 1px solid #333; }" + ) + settings_layout.addWidget(self.skills_list_widget) + + settings_container.setWidget(settings_widget) + self.splitter.addWidget(settings_container) + self.splitter.setSizes([700, 290]) + main_layout.addWidget(self.splitter) + + def update_model_dropdown(self, items: list[str]): + current = self.cbo_chat_model.currentText() + self.cbo_chat_model.clear() + self.cbo_chat_model.addItems(items) + if current in items: + self.cbo_chat_model.setCurrentText(current) + + def update_dropdown_arrays(self, models: list[str], skills: list[str]): + self.update_model_dropdown(models) + existing_checked = { + self.skills_list_widget.item(i).text() + for i in range(self.skills_list_widget.count()) + if self.skills_list_widget.item(i).checkState() == Qt.Checked + } + self.skills_list_widget.clear() + for skill in skills: + item = QListWidgetItem(skill, self.skills_list_widget) + item.setFlags( + item.flags() | Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled + ) + item.setCheckState( + Qt.Checked if skill in existing_checked else Qt.Unchecked + ) + + def attach_files(self): + files, _ = QFileDialog.getOpenFileNames( + self, "Select Files to Include", "", "All Files (*)" + ) + if not files: + return + self.attached_files = list(set(self.attached_files + files)) + self.lbl_files.setText( + f"[ {len(self.attached_files)} files staged for next prompt ]" + ) + self.lbl_files.show() + + def reset_chat_history(self): + self.chat_history_data = [] + self.chat_messages = [] + self.attached_files = [] + self.lbl_files.hide() + self.is_thinking = False + self.rebuild_chat_view() + + def register_stack_parameters(self): + """Mount session: sync dropdowns, auto-inject skill system prompt + via SkillRuntimeResolver, clear history.""" + self.parent.sync_chat_workspace_dropdown() + self.chat_history_data = [] + self.chat_messages = [] + self.is_thinking = False + + selected = self.cbo_chat_model.currentText() or "[No Target]" + + resolved_prompt = self.parent.skill_resolver.extract_system_prompt( + selected + ) + if resolved_prompt: + self.txt_system_prompt.setPlainText(resolved_prompt) + self.parent.log( + f"SkillRuntime resolved SYSTEM directive for {selected}", + "SkillRuntime", + ) + + active_skills = [ + self.skills_list_widget.item(i).text() + for i in range(self.skills_list_widget.count()) + if self.skills_list_widget.item(i).checkState() == Qt.Checked + ] + skills_str = ( + ", ".join(active_skills) if active_skills else "None (Raw Model)" + ) + + self.chat_messages.append({ + "identity": "System Cluster Guard", + "payload": ( + f"Session mounted.\nTarget: '{selected}'\n" + f"Active Stack Pipeline: [{skills_str}]\n\n" + f"Local core engine is online and ready for input." + ), + "timestamp": datetime.now().strftime("%H:%M"), + "is_user": False, + }) + self.rebuild_chat_view() + + def rebuild_chat_view(self): + if not self.chat_messages and not self.is_thinking: + self.chat_display.setHtml(""" +
+

Local Engine Thread Instantiated

+

Configure model parameters, then click + Mount Session.

+
+ """) + return + + bubble_styles = { + "user": { + "align": "right", "bg": "#2d2d2d", + "radius": "12px 12px 2px 12px", "max_w": "75%", + }, + "assistant": { + "align": "left", "bg": "#1a1a1a", + "border": "1px solid #262626", + "radius": "12px 12px 12px 2px", "max_w": "80%", + }, + "error": { + "align": "left", "bg": "#2c1a1a", + "border": "1px solid #c0392b", + "radius": "12px 12px 12px 2px", "max_w": "80%", + }, + } + + html = ( + "" + ) + for msg in self.chat_messages: + ts = msg["timestamp"] + payload = ( + msg["payload"] + .replace("<", "<").replace(">", ">") + .replace("\n", "
") + ) + is_error = "?" in msg["identity"] + style_key = ( + "user" if msg["is_user"] + else ("error" if is_error else "assistant") + ) + s = bubble_styles[style_key] + label_color = ( + "#e0e0e0" if msg["is_user"] + else ("#e74c3c" if is_error else "#d35400") + ) + label = ( + "You" if msg["is_user"] + else f"{msg['identity']}" + ) + border_css = ( + f"border: {s['border']};" if "border" in s else "" + ) + html += ( + f"
" + f"" + f"{label} {ts}" + f"
" + f"" + f"{payload}" + f"
" + ) + + if self.is_thinking: + model = self.cbo_chat_model.currentText() or "Model" + html += ( + f"
" + f"" + f"{model} " + f"is calculating a response" + f"..." + f"
" + ) + + html += "" + self.chat_display.setHtml(html) + self.chat_display.ensureCursorVisible() + + + def load_project_manifest(self): + path = ManifestSupport.discover_manifest(self.parent.base_dir) + if not path: + path, _ = QFileDialog.getOpenFileName( + self, "Select Project Manifest", self.parent.base_dir, + "Project Files (*.json)", + ) + if not path: + return + manifest = ManifestSupport.load_manifest(path) + if not manifest: + self.parent.log("Failed to load manifest.", "Manifest") + return + + system_text = ManifestSupport.build_system_context(manifest) + if system_text: + self.txt_system_prompt.setPlainText(system_text) + + context_files = ManifestSupport.resolve_context_files( + manifest, os.path.dirname(path) + ) + if context_files: + self.attached_files = list(set( + self.attached_files + context_files + )) + self.lbl_files.setText( + f"[ {len(self.attached_files)} files staged: " + f"{os.path.basename(path)} loaded ]" + ) + self.lbl_files.show() + + jcl_path = os.path.join(os.path.dirname(path), JCL_FILE_NAME) + jobs = ManifestSupport.load_jcl(jcl_path) + job_summary = ( + ", ".join(j["name"] for j in jobs) if jobs else "None" + ) + + self.parent.log( + f"Manifest loaded: {os.path.basename(path)} " + f"({len(context_files)} files, JCL jobs: {job_summary})", + "Manifest", + ) + + def _extract_skill_prompt(self, skill_name: str) -> str: + skills_map = self.parent.skills_console_tab.get_all_skills_map() + path = skills_map.get(skill_name) + if not path or not os.path.exists(path): + return "" + try: + with open(path, encoding="utf-8", errors="ignore") as f: + content = f.read() + for pattern, flags in [ + (r'SYSTEM\s+"""(.*?)"""', + re.DOTALL | re.IGNORECASE), + (r'SYSTEM\s+"(.*?)"', re.IGNORECASE), + ]: + m = re.search(pattern, content, flags) + if m: + return m.group(1).strip() + except Exception: + pass + return "" + + def handle_api_result(self, sender_id, reply, raw_append=None): + self.is_thinking = False + if raw_append: + self.chat_history_data.append( + {"role": "assistant", "content": raw_append} + ) + try: + if reply.startswith("{") and reply.endswith("}"): + data = json.loads(reply) + if data.get("ui_action") == "switch_tab": + self.parent.nav_stack.setCurrentIndex( + data.get("target_index", 0) + ) + if "response_text" in data: + reply = data["response_text"] + except Exception: + pass + self.chat_messages.append({ + "identity": sender_id, "payload": reply, + "timestamp": datetime.now().strftime("%H:%M"), + "is_user": False, + }) + self.rebuild_chat_view() + self.btn_send.setEnabled(True) + self.txt_message_input.setPlaceholderText( + "Message context, prepend /code for agent parsing..." + ) + + def transmit_user_prompt(self): + user_text = self.txt_message_input.text().strip() + if not user_text and not self.attached_files: + return + + if user_text.startswith("/code"): + user_text = user_text.replace("/code", "").strip() + self.cbo_tool_agent.setCurrentText("Aider Agent Framework") + coder_idx = next( + (i for i in range(self.cbo_chat_model.count()) + if any(kw in self.cbo_chat_model.itemText(i).lower() + for kw in ("coder", "qwen"))), + None, + ) + if coder_idx is not None: + self.cbo_chat_model.setCurrentIndex(coder_idx) + + target_model = self.cbo_chat_model.currentText() + if not target_model: + self.chat_messages.append({ + "identity": "? System Guard", + "payload": "Aborted: No active target model selected.", + "timestamp": datetime.now().strftime("%H:%M"), + "is_user": False, + }) + self.rebuild_chat_view() + return + + self.txt_message_input.clear() + file_context, display_text = self._assemble_file_context(user_text) + full_prompt = ( + (file_context + "\n" + user_text) if file_context else user_text + ) + + self.chat_messages.append({ + "identity": "User", "payload": display_text, + "timestamp": datetime.now().strftime("%H:%M"), + "is_user": True, + }) + payload_history = self._build_payload_history(full_prompt) + + self.is_thinking = True + self.rebuild_chat_view() + self.btn_send.setEnabled(False) + self.txt_message_input.setPlaceholderText("Awaiting response...") + + ollama_port = self.parent.resolve_ollama_port() + worker = ApiRunnable( + model_id=target_model, port_id=ollama_port, + history_snapshot=payload_history, + temperature=self.spin_temp.value(), + max_tokens=self.spin_tokens.value(), + ) + worker.signals.result.connect(self.handle_api_result) + self.threadpool.start(worker) + + def _assemble_file_context(self, user_text: str) -> tuple[str, str]: + if not self.attached_files: + return "", user_text + parts = ["Use the following files as context for my request:\n"] + for fpath in self.attached_files: + try: + with open(fpath, encoding="utf-8") as f: + parts.append( + f"\n--- FILE: {os.path.basename(fpath)} ---\n" + f"{f.read()}\n" + ) + except Exception as e: + parts.append( + f"\n--- FILE: {os.path.basename(fpath)} " + f"[ERROR: {e}] ---\n" + ) + self.attached_files = [] + self.lbl_files.hide() + return "".join(parts), f"[Attached {len(parts) - 1} files]\n" + user_text + + def _build_payload_history(self, full_prompt: str) -> list[dict]: + sys_prompt = self.txt_system_prompt.toPlainText().strip() + + def _get_skill_directives(): + for i in range(self.skills_list_widget.count()): + item = self.skills_list_widget.item(i) + if item.checkState() != Qt.Checked: + continue + name = item.text() + prompt = self._extract_skill_prompt(name) + if not prompt: + continue + yield f"--- [Active Sub-Skill: {name}] ---\n{prompt}" + + skill_directives = list(_get_skill_directives()) + + parts = [] + if sys_prompt: + parts.append(sys_prompt) + if skill_directives: + parts.append( + "You are a multi-agent orchestrated lattice execution cluster. " + "Absorb and layer the following skill instructions:\n\n" + + "\n\n".join(skill_directives) + ) + system_content = ( + parts[0] + "\n\n" + parts[1] + if len(parts) == 2 + else (parts[0] if parts else "") + ) + + self.chat_history_data.append( + {"role": "user", "content": full_prompt} + ) + filtered = [ + m for m in self.chat_history_data if m.get("role") != "system" + ] + result = [] + if system_content: + result.append({"role": "system", "content": system_content}) + result.extend(filtered) + return result + +else: + ChatbotConsole = None diff --git a/src/ai_lsc/ui/pages/code_analysis_tab.py b/src/ai_lsc/ui/pages/code_analysis_tab.py new file mode 100644 index 0000000..493ed7c --- /dev/null +++ b/src/ai_lsc/ui/pages/code_analysis_tab.py @@ -0,0 +1,391 @@ +"""Code Analysis Workbench tab widget. + +Provides ripgrep search, fd file-finding, Python AST inspection, +and tree-sitter parse utilities — extracted from the monolith. +""" + +import json +import os +import os.path +import subprocess +import threading + +from ai_lsc.utils.process import enriched_env + +try: + from PySide6.QtCore import QTimer + from PySide6.QtGui import QFont + from PySide6.QtWidgets import ( + QFileDialog, + QHBoxLayout, + QLabel, + QLineEdit, + QPushButton, + QTabWidget, + QTextEdit, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class CodeAnalysisTab(QWidget): + """Code analysis: ripgrep search, tree-sitter parse, Python AST inspection.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + + header = QHBoxLayout() + header.addWidget(QLabel("Code Analysis Workbench")) + header.addStretch() + layout.addLayout(header) + + self.analysis_tabs = QTabWidget() + + # --- ripgrep / fd panel --- + rg_page = QWidget() + rg_layout = QVBoxLayout(rg_page) + rg_ctrl = QHBoxLayout() + rg_ctrl.addWidget(QLabel("Pattern:")) + self.txt_rg_pattern = QLineEdit() + self.txt_rg_pattern.setPlaceholderText("regex pattern...") + rg_ctrl.addWidget(self.txt_rg_pattern) + rg_ctrl.addWidget(QLabel("Path:")) + self.txt_rg_path = QLineEdit(self.main.base_dir) + rg_ctrl.addWidget(self.txt_rg_path) + btn_rg = QPushButton("Search (rg)") + btn_rg.setStyleSheet("background-color: #2980b9; color: white;") + btn_rg.clicked.connect(self.run_ripgrep) + rg_ctrl.addWidget(btn_rg) + btn_fd = QPushButton("Find (fd)") + btn_fd.setStyleSheet("background-color: #8e44ad; color: white;") + btn_fd.clicked.connect(self.run_fd) + rg_ctrl.addWidget(btn_fd) + rg_layout.addLayout(rg_ctrl) + self.rg_output = QTextEdit() + self.rg_output.setReadOnly(True) + self.rg_output.setFont(QFont("Consolas", 10)) + self.rg_output.setStyleSheet( + "background-color: #0d0d0d; color: #cfd8dc; padding: 8px;" + ) + rg_layout.addWidget(self.rg_output) + self.analysis_tabs.addTab(rg_page, "ripgrep / fd") + + # --- AST inspection panel --- + ast_page = QWidget() + ast_layout = QVBoxLayout(ast_page) + ast_ctrl = QHBoxLayout() + ast_ctrl.addWidget(QLabel("Python File:")) + self.txt_ast_file = QLineEdit() + self.txt_ast_file.setPlaceholderText("/path/to/file.py") + ast_ctrl.addWidget(self.txt_ast_file) + btn_browse = QPushButton("Browse") + btn_browse.clicked.connect(self.browse_ast_file) + ast_ctrl.addWidget(btn_browse) + btn_ast = QPushButton("Inspect AST") + btn_ast.setStyleSheet( + "background-color: #e67e22; color: white; font-weight: bold;" + ) + btn_ast.clicked.connect(self.run_ast_inspect) + ast_ctrl.addWidget(btn_ast) + ast_layout.addLayout(ast_ctrl) + self.ast_output = QTextEdit() + self.ast_output.setReadOnly(True) + self.ast_output.setFont(QFont("Consolas", 10)) + self.ast_output.setStyleSheet( + "background-color: #0d0d0d; color: #cfd8dc; padding: 8px;" + ) + ast_layout.addWidget(self.ast_output) + self.analysis_tabs.addTab(ast_page, "AST Inspection") + + # --- tree-sitter panel --- + ts_page = QWidget() + ts_layout = QVBoxLayout(ts_page) + ts_ctrl = QHBoxLayout() + ts_ctrl.addWidget(QLabel("File:")) + self.txt_ts_file = QLineEdit() + self.txt_ts_file.setPlaceholderText("/path/to/source") + ts_ctrl.addWidget(self.txt_ts_file) + btn_ts = QPushButton("Parse (tree-sitter)") + btn_ts.setStyleSheet( + "background-color: #1abc9c; color: white; font-weight: bold;" + ) + btn_ts.clicked.connect(self.run_tree_sitter) + ts_ctrl.addWidget(btn_ts) + ts_layout.addLayout(ts_ctrl) + self.ts_output = QTextEdit() + self.ts_output.setReadOnly(True) + self.ts_output.setFont(QFont("Consolas", 10)) + self.ts_output.setStyleSheet( + "background-color: #0d0d0d; color: #cfd8dc; padding: 8px;" + ) + ts_layout.addWidget(self.ts_output) + self.analysis_tabs.addTab(ts_page, "tree-sitter") + + layout.addWidget(self.analysis_tabs) + + def browse_ast_file(self): + path, _ = QFileDialog.getOpenFileName( + self, "Select Python File", self.main.base_dir, + "Python (*.py)" + ) + if path: + self.txt_ast_file.setText(path) + self.txt_ts_file.setText(path) + + def run_ripgrep(self): + pattern = self.txt_rg_pattern.text().strip() + search_path = self.txt_rg_path.text().strip() + if not pattern or not search_path: + self.main.log("Pattern and path required.", "CodeAnalysis") + return + self.rg_output.clear() + self.main.log(f"rg: searching '{pattern}' in {search_path}", "CodeAnalysis") + def _run(): + env = enriched_env(self.main.base_bin_dir) + try: + proc = subprocess.run( + ["rg", "--json", pattern, search_path], + capture_output=True, text=True, env=env, timeout=15, + ) + lines = [l for l in proc.stdout.splitlines() if l.strip()] + html_parts = [] + for line in lines[:200]: + try: + data = json.loads(line) + match_type = data.get("type", "match") + if match_type == "match": + d = data["data"] + html_parts.append( + f'' + f'{d["path"]["text"]}:{d["line_number"]}' + f': ' + f'{d["lines"]["text"].strip()}' + ) + elif match_type == "summary": + stats = data["data"]["stats"] + html_parts.append( + f'' + f'{stats["matched_lines"]} matches in ' + f'{stats["matched_files"]} files ' + f'({stats["elapsed"]["total"]}s)' + ) + except (json.JSONDecodeError, KeyError): + html_parts.append(line) + result = "
".join(html_parts) if html_parts else "No results." + QTimer.singleShot( + 0, lambda: self.rg_output.setHtml(result) + ) + except FileNotFoundError: + QTimer.singleShot( + 0, lambda: self.rg_output.setPlainText( + "ripgrep not found. Install: pacman -S ripgrep" + ) + ) + except Exception as exc: + QTimer.singleShot( + 0, lambda: self.rg_output.setPlainText(f"Error: {exc}") + ) + threading.Thread(target=_run, daemon=True).start() + + def run_fd(self): + pattern = self.txt_rg_pattern.text().strip() + search_path = self.txt_rg_path.text().strip() + if not search_path: + self.main.log("Path required.", "CodeAnalysis") + return + self.rg_output.clear() + self.main.log(f"fd: finding '{pattern}' in {search_path}", "CodeAnalysis") + def _run(): + env = enriched_env(self.main.base_bin_dir) + try: + args = ["fd", search_path] if not pattern else ["fd", pattern, search_path] + proc = subprocess.run( + args, capture_output=True, text=True, env=env, timeout=10, + ) + lines = proc.stdout.strip().splitlines()[:200] + html = "
".join( + f'{l}' for l in lines + ) if lines else "No results." + QTimer.singleShot(0, lambda: self.rg_output.setHtml(html)) + except FileNotFoundError: + QTimer.singleShot( + 0, lambda: self.rg_output.setPlainText( + "fd not found. Install: pacman -S fd" + ) + ) + except Exception as exc: + QTimer.singleShot( + 0, lambda: self.rg_output.setPlainText(f"Error: {exc}") + ) + threading.Thread(target=_run, daemon=True).start() + + def run_ast_inspect(self): + file_path = self.txt_ast_file.text().strip() + if not file_path or not os.path.exists(file_path): + self.main.log("Valid Python file path required.", "CodeAnalysis") + return + import ast as ast_mod + self.ast_output.clear() + try: + with open(file_path, encoding="utf-8") as f: + source = f.read() + tree = ast_mod.parse(source) + sections = [] + + imports = [ + f"import {n.name}" if not n.asname + else f"import {n.name} as {n.asname}" + for n in ast_mod.walk(tree) + if isinstance(n, (ast_mod.Import, ast_mod.ImportFrom)) + and isinstance(n, ast_mod.Import) + ] + from_imports = [ + f"from {n.module} import {', '.join(a.name for a in n.names)}" + for n in ast_mod.walk(tree) + if isinstance(n, ast_mod.ImportFrom) and n.module + ] + classes = [ + (n.name, n.lineno, [ + m.name for m in n.body + if isinstance(m, (ast_mod.FunctionDef, ast_mod.AsyncFunctionDef)) + ]) + for n in ast_mod.walk(tree) + if isinstance(n, ast_mod.ClassDef) + ] + functions = [ + (n.name, n.lineno) + for n in ast_mod.walk(tree) + if isinstance(n, (ast_mod.FunctionDef, ast_mod.AsyncFunctionDef)) + and not any( + isinstance(p, ast_mod.ClassDef) + for p in ast_mod.walk(tree) + if hasattr(p, 'body') and n in p.body + ) + ] + + if imports: + sections.append( + "Imports:
" + + "
".join(f'{i}' for i in imports) + ) + if from_imports: + sections.append( + "From Imports:
" + + "
".join(f'{i}' for i in from_imports) + ) + if classes: + cls_lines = [] + for cname, lineno, methods in classes: + methods_str = ", ".join(methods) if methods else "(none)" + cls_lines.append( + f'L{lineno} ' + f'{cname}: {methods_str}' + ) + sections.append( + "Classes:
" + "
".join(cls_lines) + ) + if functions: + fn_lines = [ + f'L{lineno} {fname}' + for fname, lineno in functions + ] + sections.append( + "Top-Level Functions:
" + "
".join(fn_lines) + ) + + result = "

".join(sections) if sections else "Empty module." + self.ast_output.setHtml(result) + self.main.log( + f"AST: {len(classes)} classes, {len(functions)} functions, " + f"{len(imports)} imports in {os.path.basename(file_path)}", + "CodeAnalysis", + ) + except SyntaxError as exc: + self.ast_output.setPlainText(f"Syntax Error: {exc}") + except Exception as exc: + self.ast_output.setPlainText(f"Error: {exc}") + + def run_tree_sitter(self): + file_path = self.txt_ts_file.text().strip() + if not file_path or not os.path.exists(file_path): + self.main.log("Valid file path required.", "CodeAnalysis") + return + self.ts_output.clear() + try: + import tree_sitter_api as ts_api # noqa: F401 + except ImportError: + try: + from tree_sitter import Language, Parser # noqa: F401 + ts_api = None # noqa: F841 + except ImportError: + QTimer.singleShot( + 0, lambda: self.ts_output.setPlainText( + "tree-sitter Python bindings not installed. " + "Install: uv tool install tree-sitter" + ) + ) + self.main.log( + "tree-sitter not available.", "CodeAnalysis" + ) + return + + def _run(): + try: + from tree_sitter_languages import get_language, get_parser + ext_map = { + ".py": "python", ".js": "javascript", + ".ts": "typescript", ".rs": "rust", + ".go": "go", ".c": "c", ".cpp": "cpp", + ".java": "java", ".rb": "ruby", + } + ext = os.path.splitext(file_path)[1].lower() + lang_name = ext_map.get(ext) + if not lang_name: + QTimer.singleShot( + 0, lambda: self.ts_output.setPlainText( + f"Unsupported file type: {ext}" + ) + ) + return + lang = get_language(lang_name) # noqa: F841 + parser = get_parser(lang_name) + with open(file_path, "rb") as f: + tree = parser.parse(f.read()) + lines = [] + def walk(node, depth=0): + prefix = " " * depth + lines.append( + f"{prefix}{node.type} " + f"[{node.start_point[0]+1}:{node.start_point[1]}-" + f"{node.end_point[0]+1}:{node.end_point[1]}]" + ) + for child in node.children: + walk(child, depth + 1) + walk(tree.root_node) + result = "
".join( + f'{l}' + for l in lines[:500] + ) + QTimer.singleShot( + 0, lambda: self.ts_output.setHtml(result) + ) + self.main.log( + f"tree-sitter: parsed {file_path} ({lang_name})", + "CodeAnalysis", + ) + except Exception as exc: + QTimer.singleShot( + 0, lambda: self.ts_output.setPlainText( + f"tree-sitter error: {exc}" + ) + ) + threading.Thread(target=_run, daemon=True).start() + +else: + CodeAnalysisTab = None diff --git a/src/ai_lsc/ui/pages/container_stacks_tab.py b/src/ai_lsc/ui/pages/container_stacks_tab.py new file mode 100644 index 0000000..5d38b20 --- /dev/null +++ b/src/ai_lsc/ui/pages/container_stacks_tab.py @@ -0,0 +1,71 @@ +"""ContainerStacksTab widget — lists exported stack files. + +Displays available stack snapshots and provides export buttons for +Podman Compose and Docker Compose outputs. +""" + +import os + +try: + from PySide6.QtWidgets import ( + QHBoxLayout, + QLabel, + QListWidget, + QPushButton, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class ContainerStacksTab(QWidget): + """Lists exported stack files and provides export buttons.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + + header = QHBoxLayout() + header.addWidget(QLabel("Stack Execution Snapshots & Images")) + header.addStretch() + + btn_podman = QPushButton("Export -> Podman Compose") + btn_podman.setStyleSheet("background-color: #8e44ad;") + btn_podman.clicked.connect( + lambda: self.main.finalize_stack_export("podman") + ) + header.addWidget(btn_podman) + + btn_docker = QPushButton("Export -> Docker Compose") + btn_docker.setStyleSheet("background-color: #2980b9;") + btn_docker.clicked.connect( + lambda: self.main.finalize_stack_export("docker") + ) + header.addWidget(btn_docker) + + btn_lxc = QPushButton("Export -> LXC") + btn_lxc.setStyleSheet("background-color: #16a085;") + btn_lxc.clicked.connect( + lambda: self.main.finalize_stack_export("lxc") + ) + header.addWidget(btn_lxc) + layout.addLayout(header) + + self.file_list = QListWidget() + layout.addWidget(self.file_list) + self.refresh() + + def refresh(self): + self.file_list.clear() + if not os.path.exists(self.main.exports_root): + return + for fname in sorted(os.listdir(self.main.exports_root)): + if fname.endswith((".yml", ".json")): + self.file_list.addItem(fname) + +else: + ContainerStacksTab = None diff --git a/src/ai_lsc/ui/pages/datasets_tab.py b/src/ai_lsc/ui/pages/datasets_tab.py new file mode 100644 index 0000000..908e2d0 --- /dev/null +++ b/src/ai_lsc/ui/pages/datasets_tab.py @@ -0,0 +1,94 @@ +"""DatasetsTab widget — managed knowledge repositories browser. + +Provides a table view of files under ``datasets/raw`` with an import +dialog and stub vectorize buttons per row. +""" + +import os +import shutil + +try: + from PySide6.QtWidgets import ( + QFileDialog, + QHBoxLayout, + QHeaderView, + QLabel, + QPushButton, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class DatasetsTab(QWidget): + """Managed knowledge repositories browser.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + + header = QHBoxLayout() + header.addWidget(QLabel( + "Managed Knowledge Repositories (datasets/raw)" + )) + header.addStretch() + btn_add = QPushButton("+ Ingest Knowledge File") + btn_add.setStyleSheet("background-color: #009688; color: white;") + btn_add.clicked.connect(self.import_asset) + header.addWidget(btn_add) + layout.addLayout(header) + + self.table = QTableWidget(0, 3) + self.table.setHorizontalHeaderLabels( + ["Filename", "Size (MB)", "Action"] + ) + self.table.horizontalHeader().setSectionResizeMode( + 0, QHeaderView.Stretch + ) + layout.addWidget(self.table) + self.refresh_table() + + @property + def raw_dir(self) -> str: + d = os.path.join(self.main.datasets_root, "raw") + os.makedirs(d, exist_ok=True) + return d + + def import_asset(self): + path, _ = QFileDialog.getOpenFileName( + self, "Select Asset", "", + "Data (*.txt *.csv *.jsonl *.md *.pdf)", + ) + if not path: + return + dest = os.path.join(self.raw_dir, os.path.basename(path)) + shutil.copy(path, dest) + self.main.log(f"Ingested: {os.path.basename(path)}", "Data") + self.refresh_table() + + def refresh_table(self): + self.table.setRowCount(0) + if not os.path.exists(self.raw_dir): + return + for f in sorted(os.listdir(self.raw_dir)): + p = os.path.join(self.raw_dir, f) + if not os.path.isfile(p): + continue + row = self.table.rowCount() + self.table.insertRow(row) + self.table.setItem(row, 0, QTableWidgetItem(f)) + self.table.setItem( + row, 1, + QTableWidgetItem(f"{os.path.getsize(p) / (1024 * 1024):.2f} MB"), + ) + btn = QPushButton("Vectorize") + self.table.setCellWidget(row, 2, btn) + +else: + DatasetsTab = None diff --git a/src/ai_lsc/ui/pages/git_worktree_tab.py b/src/ai_lsc/ui/pages/git_worktree_tab.py new file mode 100644 index 0000000..637b025 --- /dev/null +++ b/src/ai_lsc/ui/pages/git_worktree_tab.py @@ -0,0 +1,149 @@ +"""GitWorktreeTab widget — git worktree management. + +List, create, and remove git worktrees for repositories discovered +under the base directory. All git operations use ``enriched_env`` for +PATH resolution. +""" + +import os +import subprocess + +from ai_lsc.utils.process import enriched_env + +try: + from PySide6.QtWidgets import ( + QAbstractItemView, + QComboBox, + QHBoxLayout, + QHeaderView, + QLabel, + QLineEdit, + QPushButton, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class GitWorktreeTab(QWidget): + """Git worktree management: list, create, remove worktrees for repos.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + + header = QHBoxLayout() + header.addWidget(QLabel("Git Sources — Registry Tool Tracker")) + header.addStretch() + self.btn_scan = QPushButton("Scan Repos") + self.btn_scan.clicked.connect(self.scan_repos) + header.addWidget(self.btn_scan) + layout.addLayout(header) + + self.repo_combo = QComboBox() + self.repo_combo.setPlaceholderText("Select a repository...") + layout.addWidget(self.repo_combo) + + ctrl = QHBoxLayout() + self.txt_new_branch = QLineEdit() + self.txt_new_branch.setPlaceholderText("New branch name for worktree") + ctrl.addWidget(self.txt_new_branch) + btn_add = QPushButton("Add Worktree") + btn_add.setStyleSheet("background-color: #27ae60; color: white;") + btn_add.clicked.connect(self.add_worktree) + ctrl.addWidget(btn_add) + btn_rm = QPushButton("Remove Selected") + btn_rm.setStyleSheet("background-color: #c0392b; color: white;") + btn_rm.clicked.connect(self.remove_worktree) + ctrl.addWidget(btn_rm) + layout.addLayout(ctrl) + + self.tree_table = QTableWidget(0, 3) + self.tree_table.setHorizontalHeaderLabels( + ["Worktree Path", "Branch", "Status"] + ) + self.tree_table.horizontalHeader().setSectionResizeMode( + 0, QHeaderView.Stretch + ) + self.tree_table.setSelectionBehavior(QAbstractItemView.SelectRows) + layout.addWidget(self.tree_table) + self.scan_repos() + + def scan_repos(self): + self.repo_combo.clear() + base = self.main.base_dir + candidates = [ + d for d in os.listdir(base) + if os.path.isdir(os.path.join(base, d, ".git")) + ] + for repo in candidates: + self.repo_combo.addItem(repo) + + def _current_repo_path(self) -> str | None: + name = self.repo_combo.currentText() + if not name: + return None + return os.path.join(self.main.base_dir, name) + + def _run_git(self, args: list[str], cwd: str) -> str: + env = enriched_env(self.main.base_bin_dir) + proc = subprocess.run( + ["git"] + args, capture_output=True, text=True, + cwd=cwd, env=env, timeout=10, + ) + return proc.stdout.strip() + + def refresh_table(self): + repo_path = self._current_repo_path() + if not repo_path: + return + raw = self._run_git( + ["worktree", "list", "--porcelain"], repo_path + ) + self.tree_table.setRowCount(0) + if not raw: + return + for line in raw.splitlines(): + parts = line.split(" ", 2) + if len(parts) < 3: + continue + wt_path, branch, status = parts[0], parts[1].lstrip("[]"), parts[2] + row = self.tree_table.rowCount() + self.tree_table.insertRow(row) + self.tree_table.setItem(row, 0, QTableWidgetItem(wt_path)) + self.tree_table.setItem(row, 1, QTableWidgetItem(branch)) + self.tree_table.setItem(row, 2, QTableWidgetItem(status)) + + def add_worktree(self): + repo_path = self._current_repo_path() + branch = self.txt_new_branch.text().strip() + if not repo_path or not branch: + self.main.log("Provide repo and branch name.", "GitWorktree") + return + wt_dir = os.path.join(os.path.dirname(repo_path), + f"{os.path.basename(repo_path)}-{branch}") + self._run_git( + ["worktree", "add", wt_dir, branch], repo_path + ) + self.main.log(f"Worktree created: {wt_dir}", "GitWorktree") + self.txt_new_branch.clear() + self.refresh_table() + + def remove_worktree(self): + repo_path = self._current_repo_path() + row = self.tree_table.currentRow() + if not repo_path or row < 0: + return + wt_path = self.tree_table.item(row, 0).text() + self._run_git(["worktree", "remove", wt_path], repo_path) + self.main.log(f"Worktree removed: {wt_path}", "GitWorktree") + self.refresh_table() + +else: + GitWorktreeTab = None diff --git a/src/ai_lsc/ui/pages/infrastructure_layer_page.py b/src/ai_lsc/ui/pages/infrastructure_layer_page.py new file mode 100644 index 0000000..0693801 --- /dev/null +++ b/src/ai_lsc/ui/pages/infrastructure_layer_page.py @@ -0,0 +1,63 @@ +"""InfrastructureLayerPage widget — filtered registry view for a single layer. + +Displays ServiceRows for every tool belonging to a given infrastructure +layer inside a scrollable area. +""" + +try: + from PySide6.QtGui import QFont + from PySide6.QtWidgets import ( + QLabel, + QScrollArea, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + try: + from ai_lsc.ui.pages.service_row import ServiceRow + except ImportError: + ServiceRow = None + + class InfrastructureLayerPage(QWidget): + """Filtered registry view for a single infrastructure layer. + Displays ServiceRows for every tool belonging to the given layer.""" + + def __init__(self, main_window, layer_name: str): + super().__init__() + self.main = main_window + self.layer_name = layer_name + layout = QVBoxLayout(self) + + lbl = QLabel(f"Infrastructure Workspace -- {layer_name}") + lbl.setFont(QFont("Segoe UI", 14)) + layout.addWidget(lbl) + + lbl_desc = QLabel( + f"Filtered registry view showing tools in the " + f"{layer_name} abstraction stratum." + ) + lbl_desc.setStyleSheet("color: #7f8c8d;") + layout.addWidget(lbl_desc) + + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll_content = QWidget() + self.layer_layout = QVBoxLayout(scroll_content) + + grouped = self.main.registry_mgr.get_grouped_by_layer() + layer_tools = grouped.get(layer_name, []) + for t_id, meta in layer_tools: + port = meta.get("launcher", {}).get("default_port") + row = ServiceRow(self.main, t_id, port, meta) + self.layer_layout.addWidget(row) + + self.layer_layout.addStretch() + scroll.setWidget(scroll_content) + layout.addWidget(scroll) + +else: + InfrastructureLayerPage = None diff --git a/src/ai_lsc/ui/pages/ipc_stack_tab.py b/src/ai_lsc/ui/pages/ipc_stack_tab.py new file mode 100644 index 0000000..a292c86 --- /dev/null +++ b/src/ai_lsc/ui/pages/ipc_stack_tab.py @@ -0,0 +1,198 @@ +"""IpcStackTab widget -- AI-LSC Stack Editor. + +Drag ecosystem tools and skills into an ordered execution flow, validate +dependencies, and compile the runtime stack state to a JSON file. +""" + +import json +import os +from datetime import datetime + +from ai_lsc.constants import PIPELINE_FILE_NAME, STATE_FILE_NAME + +try: + from PySide6.QtCore import Qt + from PySide6.QtWidgets import ( + QHBoxLayout, + QLabel, + QListWidget, + QListWidgetItem, + QPushButton, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class IpcStackTab(QWidget): + """Visual stack flow compiler: drag ecosystem tools and skills + into an ordered execution flow, validate dependencies, and compile + the runtime stack state.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QHBoxLayout(self) + + left_panel = QVBoxLayout() + left_panel.addWidget(QLabel("Available Ecosystem Components")) + self.avail_tree = QTreeWidget() + self.avail_tree.setColumnCount(1) + self.avail_tree.setHeaderLabels(["Component"]) + left_panel.addWidget(self.avail_tree) + + center_panel = QVBoxLayout() + center_panel.addStretch() + btn_add = QPushButton(" >> ") + btn_add.clicked.connect(self.add_node) + center_panel.addWidget(btn_add) + btn_rem = QPushButton(" << ") + btn_rem.clicked.connect(self.remove_node) + center_panel.addWidget(btn_rem) + center_panel.addStretch() + + right_panel = QVBoxLayout() + right_panel.addWidget(QLabel("Active Execution Flow")) + self.flow_list = QListWidget() + right_panel.addWidget(self.flow_list) + + self.lbl_validation = QLabel("Health: Awaiting Compilation...") + self.lbl_validation.setStyleSheet("color: #7f8c8d; font-weight: bold;") + right_panel.addWidget(self.lbl_validation) + + btn_compile = QPushButton("Compile Stack") + btn_compile.setStyleSheet( + "background-color: #27ae60; padding: 10px; font-weight: bold;" + ) + btn_compile.clicked.connect(self.compile_stack) + right_panel.addWidget(btn_compile) + + layout.addLayout(left_panel, 2) + layout.addLayout(center_panel, 1) + layout.addLayout(right_panel, 2) + + def refresh(self): + self.avail_tree.clear() + state_file = os.path.join(self.main.config_root, STATE_FILE_NAME) + installed_tools = [] + if os.path.exists(state_file): + try: + with open(state_file) as f: + installed_tools = json.load(f).get("active_tools", []) + except Exception: + pass + + if installed_tools: + eco_node = QTreeWidgetItem(["Ecosystem Infrastructure"]) + self.avail_tree.addTopLevelItem(eco_node) + for t_id in installed_tools: + meta = self.main.registry_mgr.get_tool(t_id) + item = QTreeWidgetItem([meta.get("name", t_id)]) + item.setData(0, Qt.UserRole, t_id) + eco_node.addChild(item) + + skills_dir = self.main.skills_root + if os.path.exists(skills_dir): + skill_node = QTreeWidgetItem(["Runtime Skills"]) + self.avail_tree.addTopLevelItem(skill_node) + for entry in sorted(os.listdir(skills_dir)): + if entry.startswith("."): + continue + full = os.path.join(skills_dir, entry) + if os.path.isfile(full): + item = QTreeWidgetItem([entry]) + item.setData(0, Qt.UserRole, f"skill:{entry}") + skill_node.addChild(item) + self.avail_tree.expandAll() + + def add_node(self): + selected = self.avail_tree.currentItem() + if not selected or not selected.data(0, Qt.UserRole): + return + t_id = selected.data(0, Qt.UserRole) + display = selected.text(0) + if t_id.startswith("skill:"): + display = f"[Skill] {display}" + + existing = [ + self.flow_list.item(i).data(Qt.UserRole) + for i in range(self.flow_list.count()) + ] + if t_id in existing: + return + + item = QListWidgetItem(display) + item.setData(Qt.UserRole, t_id) + self.flow_list.addItem(item) + self.validate_flow() + + def remove_node(self): + row = self.flow_list.currentRow() + if row >= 0: + self.flow_list.takeItem(row) + self.validate_flow() + + def validate_flow(self): + flow_ids = [ + self.flow_list.item(i).data(Qt.UserRole) + for i in range(self.flow_list.count()) + ] + missing = self.main.registry_mgr.check_dependencies(flow_ids) + if missing: + dep_names = [ + self.main.registry_mgr.get_tool(d).get("name", d) + for d in missing + ] + self.lbl_validation.setText( + f"Warning: Missing Dependencies -> {', '.join(dep_names)}" + ) + self.lbl_validation.setStyleSheet( + "color: #e74c3c; font-weight: bold;" + ) + else: + self.lbl_validation.setText( + "Health: Dependencies Satisfied. Ready to compile." + ) + self.lbl_validation.setStyleSheet( + "color: #2ecc71; font-weight: bold;" + ) + + def compile_stack(self): + flow_ids = [ + self.flow_list.item(i).data(Qt.UserRole) + for i in range(self.flow_list.count()) + ] + if not flow_ids: + return + + port_map = {} + for t_id in flow_ids: + if t_id.startswith("skill:"): + continue + meta = self.main.registry_mgr.get_tool(t_id) + default_port = meta.get("launcher", {}).get("default_port") + if default_port: + port_map[t_id] = default_port + + state = { + "active_tools": flow_ids, + "port_map": port_map, + "timestamp": datetime.now().isoformat(), + } + pipe_file = os.path.join(self.main.config_root, PIPELINE_FILE_NAME) + os.makedirs(self.main.config_root, exist_ok=True) + with open(pipe_file, "w") as f: + json.dump(state, f, indent=4) + + self.main.log( + "Stack orchestration compiled successfully.", "StackCompiler" + ) + self.main._populate_services() + +else: + IpcStackTab = None diff --git a/src/ai_lsc/ui/pages/service_row.py b/src/ai_lsc/ui/pages/service_row.py new file mode 100644 index 0000000..af35f45 --- /dev/null +++ b/src/ai_lsc/ui/pages/service_row.py @@ -0,0 +1,515 @@ +"""ServiceRow widget -- a single service row driven by registry metadata + flags. + +Renders one tool (or skill:-prefixed behavior binding) inside the +Tools/Services page. Each row shows the service name, live status, +CPU load, port input, model selector (for engine/LLM-runtime services), +Ollama pull controls, launcher buttons (CLI/GUI/Web), and +Install/Sync + Start/Stop action buttons. + +All process management is delegated to +:class:`~ai_lsc.runtime.executor.RuntimeExecutor` -- this widget +contains **zero** ``subprocess`` / ``psutil`` calls. +""" + +import os +import threading + +from ai_lsc.constants import SERVICE_LICENSES, STATUS_STYLES +from ai_lsc.utils.process import cpu_load_for_processes + +try: + from PySide6.QtCore import Qt, QTimer + from PySide6.QtGui import QFont + from PySide6.QtWidgets import ( + QComboBox, + QDialog, + QFrame, + QFormLayout, + QHBoxLayout, + QLabel, + QLineEdit, + QMessageBox, + QPushButton, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class ServiceRow(QWidget): + """A single service row, fully driven by registry metadata + flags. + Supports both regular tools and skill:-prefixed behavior bindings.""" + + def __init__(self, parent, tool_id: str, port, meta: dict): + super().__init__(parent) + self.parent = parent + self.tool_id = tool_id + self.port = port + self.meta = meta + self.is_skill = tool_id.startswith("skill:") + + if self.is_skill: + self._build_skill_row() + return + + self.installer = meta.get("installer", {}) + self.launcher = meta.get("launcher", {}) + self.flags = meta.get("flags", {}) + self.is_ollama = self.flags.get("is_ollama", False) + self.is_docker = self.flags.get("is_docker", False) + self.has_models = meta.get("category") in ( + "Engine", "LLM Runtime", "Development", + ) + self.has_api = self.flags.get("has_web", False) or meta.get( + "category" + ) in ( + "Engine", "LLM Runtime", "Pipeline", + "Agent Framework", "Embedding", + ) + self.search_term = self.installer.get("pkg", tool_id) + self._build_ui() + + # -- property shortcuts to parent attributes ----------------------- + + @property + def _runtime(self): + """Lazy accessor for the RuntimeExecutor on the main window.""" + return self.parent.runtime + + def _log(self, text: str, source: str = "System"): + self.parent.log(text, source) + + # -- row builders -------------------------------------------------- + + def _build_skill_row(self): + layout = QHBoxLayout(self) + layout.setContentsMargins(10, 5, 10, 5) + skill_name = self.tool_id.split(":", 1)[1] + + self.lbl_name = QLabel(f"[Skill] {skill_name}") + self.lbl_name.setFixedWidth(160) + self.lbl_name.setFont(QFont("Consolas", 11, QFont.Bold)) + layout.addWidget(self.lbl_name) + + self.lbl_status = QLabel("[ READY ]") + self.lbl_status.setFixedWidth(90) + self.lbl_status.setAlignment(Qt.AlignCenter) + self.lbl_status.setStyleSheet( + "color: #3498db; font-weight: bold;" + ) + layout.addWidget(self.lbl_status) + + desc = QLabel("Skill Behavior Binding (Active in Pipeline)") + desc.setStyleSheet("color: #7f8c8d; font-style: italic;") + layout.addWidget(desc) + layout.addStretch() + + self.txt_port = None + self.cbo_model = None + + def _build_ui(self): + layout = QHBoxLayout(self) + layout.setContentsMargins(10, 5, 10, 5) + + level_tag = f"L{self.meta.get('level', 0)}" + self.lbl_name = QLabel( + f"[{level_tag}] {self.meta.get('name', self.tool_id)}" + ) + self.lbl_name.setFixedWidth(160) + self.lbl_name.setFont(QFont("Consolas", 11, QFont.Bold)) + layout.addWidget(self.lbl_name) + + self.lbl_status = QLabel("[ CHECKING ]") + self.lbl_status.setFixedWidth(90) + self.lbl_status.setAlignment(Qt.AlignCenter) + layout.addWidget(self.lbl_status) + + self.lbl_load = QLabel("---") + self.lbl_load.setFixedWidth(50) + self.lbl_load.setStyleSheet( + "color: #FFB000; font-family: 'Consolas'; font-weight: bold;" + ) + layout.addWidget(self.lbl_load) + + if self.port is not None: + layout.addWidget(QLabel("Port:")) + self.txt_port = QLineEdit(str(self.port)) + self.txt_port.setFixedWidth(60) + self.txt_port.setAlignment(Qt.AlignCenter) + layout.addWidget(self.txt_port) + else: + self.txt_port = None + spacer = QFrame() + spacer.setFixedWidth(95) + layout.addWidget(spacer) + + if self.has_models: + self.cbo_model = QComboBox() + self.cbo_model.setFixedWidth(180) + layout.addWidget(self.cbo_model) + else: + self.cbo_model = None + spacer = QFrame() + spacer.setFixedWidth(180) + layout.addWidget(spacer) + + if self.is_ollama: + self.txt_pull = QLineEdit() + self.txt_pull.setPlaceholderText("model tag") + self.txt_pull.setFixedWidth(100) + layout.addWidget(self.txt_pull) + btn_pull = QPushButton("Pull") + btn_pull.setFixedWidth(50) + btn_pull.setStyleSheet( + "background-color: #d35400; color: white; font-weight: bold;" + ) + btn_pull.clicked.connect(self.pull_model) + layout.addWidget(btn_pull) + + layout.addStretch() + + # -- Infer C/W/G interface buttons from flags + launcher type -- + # Tools with explicit flags keep them; others are inferred so + # every service row gets the correct launcher buttons. + launcher_type = self.launcher.get("type", "") + has_port = self.port is not None + show_web = self.flags.get("has_web", False) or ( + has_port and launcher_type in ("tmux", "systemd") + ) + show_gui = self.flags.get("has_gui", False) or ( + launcher_type == "desktop" + ) + show_cli = self.flags.get("has_cli", False) or ( + launcher_type in ("cli", "tmux") + ) + + launcher_style = ( + "QPushButton { background-color: #34495e; color: white; " + "font-weight: bold; border-radius: 3px; } " + "QPushButton:hover { background-color: #415b76; }" + ) + for visible, label, tip, handler in [ + (show_cli, "C", "Launch CLI in terminal", self.launch_cli), + (show_gui, "G", "Launch Desktop/GUI app", self.launch_gui), + (show_web, "W", "Open Web UI in browser", self.launch_web), + ]: + if visible: + btn = QPushButton(label) + btn.setFixedWidth(28) + btn.setToolTip(tip) + btn.setStyleSheet(launcher_style) + btn.clicked.connect(handler) + layout.addWidget(btn) + + spacer = QFrame() + spacer.setFixedWidth(10) + layout.addWidget(spacer) + + # API endpoint / key button for tools with external API support + if self.has_api: + btn_api = QPushButton(":set api") + btn_api.setToolTip( + "Set external API endpoint and key" + ) + btn_api.setStyleSheet( + "QPushButton { background-color: #e67e22; color: white; " + "font-weight: bold; font-size: 11px; border-radius: 3px; }" + "QPushButton:hover { background-color: #f39c12; }" + ) + btn_api.setFixedWidth(60) + btn_api.clicked.connect(self._open_api_dialog) + layout.addWidget(btn_api) + + self.btn_update = QPushButton("Install / Sync") + self.btn_update.setStyleSheet("background-color: #8e44ad;") + self.btn_update.clicked.connect(self.smart_install) + layout.addWidget(self.btn_update) + + start_labels = { + "systemd": "Enable (systemd)", + "desktop": "Launch App", + } + self.btn_start = QPushButton( + start_labels.get(self.launcher.get("type"), "Start Engine") + ) + self.btn_start.setStyleSheet("background-color: #27ae60;") + self.btn_start.clicked.connect(self.start_service) + layout.addWidget(self.btn_start) + + stop_labels = {"systemd": "Disable"} + self.btn_stop = QPushButton( + stop_labels.get(self.launcher.get("type"), "Kill Process") + ) + self.btn_stop.setStyleSheet("background-color: #c0392b;") + self.btn_stop.clicked.connect(self.stop_service) + layout.addWidget(self.btn_stop) + + # -- model hydration ----------------------------------------------- + + def hydrate_models(self, ollama_models: list, aider_models: list): + if not self.has_models or self.cbo_model is None: + return + self.cbo_model.clear() + pool = ( + aider_models + if any(k in self.tool_id.lower() + for k in ("aider", "claude")) + else ollama_models + ) + self.cbo_model.addItems(pool) + + # -- launcher actions (delegate to runtime) ---------------------- + + def launch_cli(self): + desc = self._runtime.launch_cli( + tool_id=self.tool_id, + launcher_type=self.launcher.get("type", ""), + ) + self._log(desc) + + def launch_gui(self): + self._log( + f"GUI payload triggered for: {self.meta.get('name')}", "System" + ) + + def launch_web(self): + if self.txt_port is None: + return + url = self._runtime.open_web_url(self.txt_port.text().strip()) + self._log(f"Browser navigated to {url}", "System") + + # -- install (dispatched via runtime) ----------------------------- + + def smart_install(self): + inst_type = self.installer.get("type") + pkg = self.installer.get("pkg", self.tool_id) + cmd = self.installer.get("cmd", "") + + self._log( + f"Deploying {self.meta.get('name')} via {inst_type}...", + "Installer", + ) + + license_text = SERVICE_LICENSES.get(self.meta.get("name")) + if license_text: + msg = QMessageBox(self) + msg.setWindowTitle(f"Legal Notice: {self.meta.get('name')}") + msg.setText( + f"To install {self.meta.get('name')}, " + f"you must accept the license." + ) + msg.setInformativeText(license_text) + msg.setTextInteractionFlags(Qt.TextBrowserInteraction) + msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) + if msg.exec() != QMessageBox.Ok: + return + + threading.Thread( + target=self._run_install, + args=(inst_type, pkg, cmd), + daemon=True, + ).start() + + def _run_install(self, inst_type: str, pkg: str, cmd: str): + ctx = self._runtime.format_context() + try: + desc = self._runtime.install_tool( + inst_type=inst_type, + pkg=pkg, + cmd=cmd, + tool_id=self.tool_id, + ctx=ctx, + ) + QTimer.singleShot( + 0, lambda d=desc, t=self.tool_id: self._log(d, t) + ) + except Exception as exc: + QTimer.singleShot( + 0, lambda e=exc: self._log( + f"Deployment failed: {e}", "Installer Error" + ) + ) + + # -- ollama model pull -------------------------------------------- + + def pull_model(self): + model_name = self.txt_pull.text().strip() + if not model_name: + self._log( + "Error: Specify a valid model target descriptor.", "Ollama" + ) + return + self._log(f"Spawning pull for: {model_name}", "Ollama") + + def _run(): + try: + proc = self._runtime.pull_model(model_name) + for raw_line in proc.stdout: + stripped = raw_line.strip() + if stripped: + QTimer.singleShot( + 0, + lambda l=stripped: self._log(l, "Ollama"), + ) + proc.wait() + tag = ( + f"Model {model_name} synced successfully." + if proc.returncode == 0 + else f"Pull failed with exit code {proc.returncode}" + ) + QTimer.singleShot(0, lambda: self._log(tag, "Ollama")) + if proc.returncode == 0: + QTimer.singleShot( + 0, self.parent.refresh_all_models + ) + except Exception as exc: + QTimer.singleShot( + 0, lambda: self._log(f"IO Exception: {exc}", "Ollama") + ) + + threading.Thread(target=_run, daemon=True).start() + + # -- start / stop / status (delegated to runtime) --------------- + + def start_service(self): + port = self.txt_port.text() if self.txt_port else "" + model_arg = "" + if (self.has_models and self.cbo_model + and self.cbo_model.currentText()): + model_arg = self.cbo_model.currentText() + + log_file = os.path.join(self.parent.logs_root, f"{self.tool_id}.log") + desc = self._runtime.start_service( + tool_id=self.tool_id, + launcher_cmd=self.launcher.get("cmd", ""), + launcher_type=self.launcher.get("type", ""), + port=port, + model_arg=model_arg, + ) + self._log(desc, self.launcher.get("type", "Tmux").capitalize()) + self.parent.verify_and_watch(log_file) + QTimer.singleShot(2000, self.update_status) + + def stop_service(self): + desc = self._runtime.stop_service( + tool_id=self.tool_id, + launcher_type=self.launcher.get("type", ""), + launcher_cmd=self.launcher.get("cmd", ""), + search_term=self.search_term, + is_docker=self.is_docker, + ) + self._log(desc, "System") + QTimer.singleShot(1500, self.update_status) + + def update_status(self): + if self.is_skill: + return + running = self._runtime.is_service_running( + launcher_type=self.launcher.get("type", ""), + tool_id=self.tool_id, + service_cmd=self.launcher.get("cmd", ""), + search_term=self.search_term, + ) + cpu = ( + cpu_load_for_processes(self.search_term) + if running + else 0.0 + ) + text, color = STATUS_STYLES[running] + self.lbl_status.setText(text) + self.lbl_status.setStyleSheet(f"color: {color}; font-weight: bold;") + self.lbl_load.setText(f"{int(cpu)}%" if running else "---") + + # -- API configuration dialog ------------------------------------ + + def _open_api_dialog(self): + dlg = QDialog(self) + dlg.setWindowTitle( + f"API Configuration — {self.meta.get('name', self.tool_id)}" + ) + dlg.setMinimumWidth(450) + dlg_layout = QVBoxLayout(dlg) + + form = QFormLayout() + txt_endpoint = QLineEdit() + txt_endpoint.setPlaceholderText( + "e.g. https://api.openai.com/v1" + ) + txt_key = QLineEdit() + txt_key.setPlaceholderText( + "e.g. sk-... (stored locally only)" + ) + txt_key.setEchoMode(QLineEdit.Password) + txt_model_override = QLineEdit() + txt_model_override.setPlaceholderText( + "e.g. gpt-4o (optional model override)" + ) + form.addRow("API Endpoint:", txt_endpoint) + form.addRow("API Key:", txt_key) + form.addRow("Model Override:", txt_model_override) + dlg_layout.addLayout(form) + + # Restore saved values + cfg = self.parent.config_data.get("api_overrides", {}) + tool_cfg = cfg.get(self.tool_id, {}) + txt_endpoint.setText(tool_cfg.get("endpoint", "")) + txt_key.setText(tool_cfg.get("api_key", "")) + txt_model_override.setText(tool_cfg.get("model_override", "")) + + btn_box = QHBoxLayout() + btn_save = QPushButton("Save") + btn_save.setStyleSheet( + "background-color: #27ae60; color: white; font-weight: bold;" + ) + btn_clear = QPushButton("Clear") + btn_clear.setStyleSheet( + "background-color: #c0392b; color: white;" + ) + btn_cancel = QPushButton("Cancel") + btn_box.addStretch() + btn_box.addWidget(btn_save) + btn_box.addWidget(btn_clear) + btn_box.addWidget(btn_cancel) + dlg_layout.addLayout(btn_box) + + def _save(): + api_overrides = self.parent.config_data.setdefault( + "api_overrides", {} + ) + api_overrides[self.tool_id] = { + "endpoint": txt_endpoint.text().strip(), + "api_key": txt_key.text().strip(), + "model_override": txt_model_override.text().strip(), + } + self.parent.save_config() + self._log( + f"API configuration saved for {self.meta.get('name')}", + "API Config", + ) + dlg.accept() + + def _clear(): + api_overrides = self.parent.config_data.get( + "api_overrides", {} + ) + api_overrides.pop(self.tool_id, None) + self.parent.save_config() + txt_endpoint.clear() + txt_key.clear() + txt_model_override.clear() + self._log( + f"API configuration cleared for {self.meta.get('name')}", + "API Config", + ) + + btn_save.clicked.connect(_save) + btn_clear.clicked.connect(_clear) + btn_cancel.clicked.connect(dlg.reject) + + dlg.exec() + +else: + ServiceRow = None diff --git a/src/ai_lsc/ui/pages/settings_page.py b/src/ai_lsc/ui/pages/settings_page.py new file mode 100644 index 0000000..9e946e4 --- /dev/null +++ b/src/ai_lsc/ui/pages/settings_page.py @@ -0,0 +1,54 @@ +"""SettingsPage widget — ecosystem system configurations and hardening policies. + +Presents a set of security-policy checkboxes in a grouped layout. +""" + +try: + from PySide6.QtGui import QFont + from PySide6.QtWidgets import ( + QCheckBox, + QGridLayout, + QGroupBox, + QLabel, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class SettingsPage(QWidget): + """Ecosystem system configurations and core hardening policies.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + + lbl = QLabel( + "Ecosystem System Configurations & Core Hardening Policies" + ) + lbl.setFont(QFont("Segoe UI", 14)) + layout.addWidget(lbl) + + box = QGroupBox("Bare-Metal Operational Environment Security Rules") + box_layout = QGridLayout(box) + + policies = [ + "Enforce Strict Clean-Room Local Sandbox Isolation Rules", + "Disable External Network Cloud Access Topology Check Handlers", + "Auto-Rollback Infrastructure Layers on Failure Mismatches", + "Inject Kernel Hardened Telemetry Constraints", + "Enable Zero-Drift Registry Integrity Verification", + "Require Explicit Approval for Container Network Bridges", + ] + for idx, policy_text in enumerate(policies): + box_layout.addWidget(QCheckBox(policy_text), idx, 0) + + layout.addWidget(box) + layout.addStretch() + +else: + SettingsPage = None diff --git a/src/ai_lsc/ui/pages/skills_console.py b/src/ai_lsc/ui/pages/skills_console.py new file mode 100644 index 0000000..3e637df --- /dev/null +++ b/src/ai_lsc/ui/pages/skills_console.py @@ -0,0 +1,252 @@ +"""SkillsConsole widget — recursive Modelfile tree scanner and skill compiler. + +Scans the skills root directory for Modelfile blueprints, presents them in a +checkable tree, and compiles checked skills via ``ollama create`` in daemon +threads. Event feedback is appended to an on-screen console log. +""" + +import os +import re +import subprocess +import threading +from datetime import datetime + +from ai_lsc.constants import TREE_SKIP_PATTERNS +from ai_lsc.utils.process import enriched_env + +try: + from PySide6.QtCore import Qt, QTimer + from PySide6.QtGui import QColor, QFont + from PySide6.QtWidgets import ( + QComboBox, + QHBoxLayout, + QHeaderView, + QLabel, + QPushButton, + QTextEdit, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class SkillsConsole(QWidget): + """Scans Modelfile blueprints via recursive tree, compiles checked skills.""" + + def __init__(self, parent): + super().__init__() + self.parent = parent + layout = QVBoxLayout(self) + + top = QHBoxLayout() + top.addWidget(QLabel("Target Runtime Engine:")) + self.agent_combo = QComboBox() + self.agent_combo.addItems([ + "Ollama Local Cluster", "Hermes Orchestrator", + "Odysseus Matrix", "Dify Upstream Pipeline", + ]) + top.addWidget(self.agent_combo) + + btn_build = QPushButton("Build/Register Selected Skills") + btn_build.setStyleSheet( + "background-color: #d35400; color: white; font-weight: bold; " + "padding: 5px 15px;" + ) + btn_build.clicked.connect(self.compile_checked_skills) + top.addWidget(btn_build) + top.addStretch() + layout.addLayout(top) + + layout.addWidget(QLabel( + "Discovered Modelfiles Cluster (Checked = Active):" + )) + self.skills_tree = QTreeWidget() + self.skills_tree.setColumnCount(2) + self.skills_tree.setHeaderLabels([ + "Skill / Modelfile Model Name", + "Inferred Functional System Description", + ]) + self.skills_tree.header().setSectionResizeMode( + 0, QHeaderView.Interactive + ) + self.skills_tree.header().setSectionResizeMode(1, QHeaderView.Stretch) + self.skills_tree.setColumnWidth(0, 260) + self.skills_tree.setStyleSheet(""" + QTreeWidget { background-color: #1e1e1e; color: #d4d4d4; + border: 1px solid #333; } + QTreeWidget::item:hover { background-color: #2d2d2d; } + QHeaderView::section { background-color: #2d2d2d; color: #b2bec3; + padding: 4px; border: 1px solid #1e1e1e; } + """) + layout.addWidget(self.skills_tree) + + layout.addWidget(QLabel("Skill Generation Event Feedback Log:")) + self.console_output = QTextEdit() + self.console_output.setReadOnly(True) + self.console_output.setFont(QFont("Consolas", 10)) + layout.addWidget(self.console_output) + self.refresh_skills() + + @staticmethod + def parse_modelfile_description(file_path: str) -> str: + try: + with open(file_path, encoding="utf-8", errors="ignore") as f: + content = f.read() + for pattern, flags in [ + (r'SYSTEM\s+"""(.*?)"""', + re.DOTALL | re.IGNORECASE), + (r'SYSTEM\s+"(.*?)"', re.IGNORECASE), + ]: + match = re.search(pattern, content, flags) + if match: + desc = " ".join(match.group(1).strip().splitlines()) + return desc[:110] + "..." if len(desc) > 110 else desc + for line in content.splitlines(): + stripped = line.strip() + if (stripped.startswith("#") + and "ollama run" not in stripped.lower() + and "ollama create" not in stripped.lower()): + clean = stripped.lstrip("# ").strip() + if clean: + return clean + except Exception: + pass + return "Configured Model Template (No embedded description found)" + + def refresh_skills(self): + self.skills_tree.clear() + skills_dir = self.parent.skills_root + if not os.path.exists(skills_dir): + return + self._build_tree(self.skills_tree, skills_dir) + self.skills_tree.expandToDepth(0) + + def _build_tree(self, parent_item, path: str): + try: + entries = sorted(os.listdir(path)) + except PermissionError: + return + for entry in entries: + if entry.startswith(".") or entry in TREE_SKIP_PATTERNS: + continue + full_path = os.path.join(path, entry) + if os.path.isdir(full_path): + if not any(os.scandir(full_path)): + continue + folder_item = QTreeWidgetItem(parent_item) + folder_item.setText( + 0, entry.replace("-", " ").replace("_", " ").title() + ) + folder_item.setForeground(0, QColor("#e67e22")) + font = QFont() + font.setBold(True) + folder_item.setFont(0, font) + self._build_tree(folder_item, full_path) + elif self._is_valid_modelfile(full_path): + desc = self.parse_modelfile_description(full_path) + item = QTreeWidgetItem(parent_item) + item.setText(0, entry) + item.setText(1, desc) + item.setToolTip(1, desc) + item.setFlags(item.flags() | Qt.ItemIsUserCheckable) + item.setCheckState(0, Qt.Unchecked) + item.setData(0, Qt.UserRole, full_path) + + @staticmethod + def _is_valid_modelfile(path: str) -> bool: + try: + with open(path, encoding="utf-8", errors="ignore") as f: + head = f.read(1024) + return any( + kw in head for kw in ("FROM", "SYSTEM", "# Run `ollama") + ) + except Exception: + return False + + def _traverse_checked(self) -> list[tuple[str, str]]: + results = [] + + def walk(item): + for i in range(item.childCount()): + child = item.child(i) + if (child.checkState(0) == Qt.Checked + and child.data(0, Qt.UserRole)): + results.append((child.text(0), child.data(0, Qt.UserRole))) + walk(child) + + walk(self.skills_tree.invisibleRootItem()) + return results + + def get_checked_skills(self) -> list[str]: + return [name for name, _ in self._traverse_checked()] + + def get_all_skills_map(self) -> dict[str, str]: + mapping = {} + + def walk(item): + for i in range(item.childCount()): + child = item.child(i) + fp = child.data(0, Qt.UserRole) + if fp: + mapping[child.text(0)] = fp + walk(child) + + walk(self.skills_tree.invisibleRootItem()) + return mapping + + def compile_checked_skills(self): + targets = self._traverse_checked() + if not targets: + ts = datetime.now().strftime("%H:%M:%S") + self.console_output.append( + f"[{ts}] Compilation bypassed: No model checkboxes active." + ) + return + for model_name, path in targets: + ts = datetime.now().strftime("%H:%M:%S") + self.console_output.append( + f"[{ts}] Injecting Modelfile -> Building: '{model_name}'..." + ) + threading.Thread( + target=self._build_one, + args=(model_name, path), + daemon=True, + ).start() + + def _build_one(self, model_name: str, modelfile_path: str): + try: + env = enriched_env(self.parent.base_bin_dir) + proc = subprocess.run( + ["ollama", "create", model_name, "-f", modelfile_path], + capture_output=True, text=True, env=env, + cwd=os.path.dirname(modelfile_path), + ) + ts = datetime.now().strftime("%H:%M:%S") + if proc.returncode == 0: + html = ( + f"[{ts}] " + f"SUCCESS: '{model_name}' compiled and active." + ) + QTimer.singleShot(0, self.parent.refresh_all_models) + else: + err = proc.stderr.strip().replace("\n", " ") + html = ( + f"[{ts}] " + f"ERROR on '{model_name}': {err}" + ) + QTimer.singleShot(0, lambda: self.console_output.append(html)) + except Exception as exc: + ts = datetime.now().strftime("%H:%M:%S") + QTimer.singleShot( + 0, lambda: self.console_output.append( + f"[{ts}] Exception: {exc}" + ) + ) + +else: + SkillsConsole = None diff --git a/src/ai_lsc/ui/pages/tools_tab.py b/src/ai_lsc/ui/pages/tools_tab.py new file mode 100644 index 0000000..bf5fae6 --- /dev/null +++ b/src/ai_lsc/ui/pages/tools_tab.py @@ -0,0 +1,57 @@ +"""ToolsTab widget — read-only tree view of the full tool registry. + +Displays every registered tool grouped by its infrastructure layer, +showing tool name, level, layer, and role. +""" + +try: + from PySide6.QtCore import Qt + from PySide6.QtWidgets import ( + QLabel, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + +if _HAS_QT: + + class ToolsTab(QWidget): + """Read-only tree view of the full tool registry, grouped by layer.""" + + def __init__(self, main_window): + super().__init__() + self.main = main_window + layout = QVBoxLayout(self) + layout.addWidget(QLabel( + "Registry Tool Surface (13-Layer Architecture)" + )) + + self.tree = QTreeWidget() + self.tree.setColumnCount(4) + self.tree.setHeaderLabels(["Tool", "Level", "Layer", "Role"]) + layout.addWidget(self.tree) + + def refresh(self): + self.tree.clear() + grouped = self.main.registry_mgr.get_grouped_by_layer() + for layer, tools in grouped.items(): + layer_item = QTreeWidgetItem([layer]) + self.tree.addTopLevelItem(layer_item) + for t_id, meta in tools: + lvl = f"L{meta.get('level', 0)}" + item = QTreeWidgetItem([ + meta.get("name", t_id), + lvl, + meta.get("layer", ""), + meta.get("role", ""), + ]) + item.setData(0, Qt.UserRole, t_id) + layer_item.addChild(item) + self.tree.expandAll() + +else: + ToolsTab = None diff --git a/src/ai_lsc/ui/pages/verification_tab.py b/src/ai_lsc/ui/pages/verification_tab.py new file mode 100644 index 0000000..c2e8bb3 --- /dev/null +++ b/src/ai_lsc/ui/pages/verification_tab.py @@ -0,0 +1,429 @@ +"""Verification UI tab — per-tool installation compliance dashboard. + +Provides a table showing all registered tools with their verification +scores, individual check results, and bulk verification controls. +Integrates with ``InstallerManager.verify()`` to run the compliance +checklist and display results in real time. + +Requires PySide6. When PySide6 is not installed, the module still +parses but exports stub classes so that ``agents/__init__.py`` style +try/except imports work. +""" + +from __future__ import annotations + +import os +import threading +from typing import Any + +from ai_lsc.constants import BASE_DIR + +try: + from PySide6.QtCore import QThread, Signal, Qt, QTimer + from PySide6.QtGui import QColor, QFont, QPalette + from PySide6.QtWidgets import ( + QFrame, + QGridLayout, + QHBoxLayout, + QHeaderView, + QLabel, + QLineEdit, + QMainWindow, + QProgressBar, + QPushButton, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, + ) + _HAS_QT = True +except ImportError: + _HAS_QT = False + QWidget = object # type: ignore[assignment, misc] + QThread = object # type: ignore[assignment, misc] + Signal = lambda *a, **kw: None # type: ignore[assignment, misc] + + +# ── Verification worker (runs in background thread) ───────────────── + +class VerificationWorker(QThread if _HAS_QT else object): # type: ignore[misc] + """Run verification checks for a batch of tools in a background thread.""" + + progress = Signal(int, int) # (completed, total) + tool_done = Signal(str, dict) # (tool_id, result_dict) + finished = Signal(int) # total tools processed + + def __init__( + self, + tools: dict[str, dict[str, Any]], + tools_root: str, + base_dir: str = BASE_DIR, + parent: QWidget | None = None, + ) -> None: + if not _HAS_QT: + return + super().__init__(parent) + self.tools = tools + self.tools_root = tools_root + self.base_dir = base_dir + + def run(self) -> None: + if not _HAS_QT: + return + from ai_lsc.runtime.installer import InstallerManager + + mgr = InstallerManager(self.tools_root, self.base_dir) + total = len(self.tools) + completed = 0 + + for tool_id, meta in self.tools.items(): + installer = meta.get("installer", {}) + fs = meta.get("filesystem", {}) + result = mgr.verify( + tool_id=tool_id, + inst_type=installer.get("type", "pacman"), + pkg=installer.get("pkg", ""), + cmd=installer.get("cmd", ""), + filesystem=fs, + ) + self.tool_done.emit(tool_id, result) + completed += 1 + self.progress.emit(completed, total) + + self.finished.emit(total) + + +# ── Verification Tab ──────────────────────────────────────────────── + +class VerificationTab(QWidget if _HAS_QT else object): # type: ignore[misc] + """Dashboard showing per-tool installation verification results. + + Columns: + - Tool ID + - Install Type + - Score (0-100%) + - Native Install + - Filesystem Compliance + - Config Redirect + - Cache Redirect + - Logs Redirect + - Launcher Accessible + - Version Detection + - Health Check + - Location + """ + + def __init__( + self, + registry: dict[str, dict[str, Any]], + tools_root: str, + base_dir: str = BASE_DIR, + parent: QWidget | None = None, + ) -> None: + if not _HAS_QT: + return + super().__init__(parent) + self.registry = registry + self.tools_root = tools_root + self.base_dir = base_dir + self._worker: VerificationWorker | None = None + self._results: dict[str, dict] = {} + self._init_ui() + self._populate_table() + + def _init_ui(self) -> None: + layout = QVBoxLayout(self) + layout.setContentsMargins(10, 10, 10, 10) + layout.setSpacing(8) + + # ── Header ─────────────────────────────────────────────────── + hdr = QHBoxLayout() + title = QLabel( + "Installation Verification — Ankh of Jah" + ) + title.setFont(QFont("Segoe UI", 14)) + hdr.addWidget(title) + hdr.addStretch() + layout.addLayout(hdr) + + # ── Controls ─────────────────────────────────────────────── + ctrl_frame = QFrame() + ctrl_frame.setStyleSheet( + "QFrame { border: 1px solid #333; border-radius: 6px; " + "padding: 8px; background-color: #1a1a1a; }" + ) + ctrl_layout = QHBoxLayout(ctrl_frame) + + self.btn_verify_all = QPushButton("Verify All Tools") + self.btn_verify_all.setStyleSheet( + "QPushButton { background-color: #2ecc71; color: #000; " + "font-weight: bold; padding: 8px 16px; border-radius: 4px; }" + "QPushButton:hover { background-color: #27ae60; }" + ) + self.btn_verify_all.clicked.connect(self._run_batch_verify) + ctrl_layout.addWidget(self.btn_verify_all) + + self.btn_verify_selected = QPushButton("Verify Selected") + self.btn_verify_selected.setStyleSheet( + "QPushButton { background-color: #3498db; color: #fff; " + "font-weight: bold; padding: 8px 16px; border-radius: 4px; }" + "QPushButton:hover { background-color: #2980b9; }" + ) + self.btn_verify_selected.clicked.connect(self._run_selected_verify) + ctrl_layout.addWidget(self.btn_verify_selected) + + self.txt_filter = QLineEdit() + self.txt_filter.setPlaceholderText("Filter by tool ID...") + self.txt_filter.setMaximumWidth(250) + self.txt_filter.setStyleSheet( + "QLineEdit { background-color: #1e1e1e; border: 1px solid #444; " + "color: white; padding: 6px; border-radius: 4px; }" + ) + self.txt_filter.textChanged.connect(self._apply_filter) + ctrl_layout.addWidget(self.txt_filter) + + ctrl_layout.addStretch() + + # Summary label + self.lbl_summary = QLabel("Ready — no verifications run yet") + self.lbl_summary.setStyleSheet("color: #7f8c8d; font-size: 11px;") + ctrl_layout.addWidget(self.lbl_summary) + + layout.addWidget(ctrl_frame) + + # ── Progress bar ──────────────────────────────────────────── + self.progress_bar = QProgressBar() + self.progress_bar.setVisible(False) + self.progress_bar.setStyleSheet( + "QProgressBar { border: 1px solid #333; border-radius: 4px; " + "background-color: #1e1e1e; text-align: center; color: white; " + "min-height: 20px; }" + "QProgressBar::chunk { background-color: #2ecc71; border-radius: 3px; }" + ) + layout.addWidget(self.progress_bar) + + # ── Results table ────────────────────────────────────────── + self.table = QTableWidget() + self.table.setColumnCount(12) + self.table.setHorizontalHeaderLabels([ + "Tool ID", "Type", "Score", + "Native", "FS OK", "Config", "Cache", "Logs", + "Binary", "Version", "Health", "Location", + ]) + self.table.setAlternatingRowColors(True) + self.table.setSortingEnabled(True) + self.table.setSelectionBehavior( + QTableWidget.SelectionBehavior.SelectRows + ) + self.table.setEditTriggers( + QTableWidget.EditTrigger.NoEditTriggers + ) + + header = self.table.horizontalHeader() + # All columns interactive so user can resize to read content + for col in range(self.table.columnCount()): + header.setSectionResizeMode( + col, QHeaderView.ResizeMode.Interactive + ) + # Set sensible default widths + col_widths = [200, 80, 60, 60, 60, 60, 60, 60, 60, 60, 60, 250] + for col, width in enumerate(col_widths): + self.table.setColumnWidth(col, width) + + self.table.setStyleSheet( + "QTableWidget { background-color: #1e1e1e; " + "gridline-color: #333; border: 1px solid #333; }" + "QTableWidget::item { padding: 4px; }" + "QHeaderView::section { background-color: #2c3e50; " + "color: white; padding: 4px; border: 1px solid #1a252f; " + "font-weight: bold; }" + ) + + layout.addWidget(self.table) + + def _populate_table(self) -> None: + """Fill the table with all registered tools (unverified state).""" + self.table.setRowCount(len(self.registry)) + for row, (tool_id, meta) in enumerate( + sorted(self.registry.items()) + ): + installer = meta.get("installer", {}) + name = meta.get("name", tool_id) + + self.table.setItem( + row, 0, QTableWidgetItem(name or tool_id) + ) + self.table.setItem( + row, 1, QTableWidgetItem( + installer.get("type", "unknown") + ) + ) + self.table.setItem(row, 2, QTableWidgetItem("\u2014")) + for col in range(3, 12): + self.table.setItem(row, col, QTableWidgetItem("\u2014")) + + def _run_batch_verify(self) -> None: + """Verify all tools in a background thread.""" + if self._worker and self._worker.isRunning(): + return + + self.progress_bar.setVisible(True) + self.progress_bar.setValue(0) + self.btn_verify_all.setEnabled(False) + self.btn_verify_selected.setEnabled(False) + self.lbl_summary.setText("Verifying all tools...") + + self._worker = VerificationWorker( + self.registry, self.tools_root, self.base_dir, self, + ) + self._worker.tool_done.connect(self._on_tool_result) + self._worker.progress.connect(self._on_progress) + self._worker.finished.connect(self._on_batch_done) + self._worker.start() + + def _run_selected_verify(self) -> None: + """Verify only the currently selected rows.""" + rows = set( + i.row() for i in self.table.selectedItems() + ) + if not rows: + return + + # Build a subset of the registry for selected tools + selected_tools: dict[str, dict[str, Any]] = {} + for row in rows: + item = self.table.item(row, 0) + if item: + tool_name = item.text() + # Map display name back to tool_id + for tid, meta in self.registry.items(): + if meta.get("name", tid) == tool_name or tid == tool_name: + selected_tools[tid] = self.registry[tid] + break + + if not selected_tools: + return + + self.progress_bar.setVisible(True) + self.progress_bar.setMaximum(len(selected_tools)) + self.progress_bar.setValue(0) + self.lbl_summary.setText( + f"Verifying {len(selected_tools)} selected tools..." + ) + + self._worker = VerificationWorker( + selected_tools, self.tools_root, self.base_dir, self, + ) + self._worker.tool_done.connect(self._on_tool_result) + self._worker.progress.connect(self._on_progress) + self._worker.finished.connect(self._on_batch_done) + self._worker.start() + + def _on_progress(self, completed: int, total: int) -> None: + """Update the progress bar.""" + self.progress_bar.setMaximum(total) + self.progress_bar.setValue(completed) + + def _on_tool_result(self, tool_id: str, result: dict) -> None: + """Update a single row with verification results.""" + self._results[tool_id] = result + + # Find the row for this tool + row = -1 + for r in range(self.table.rowCount()): + item = self.table.item(r, 0) + if item is None: + continue + item_text = item.text() + expected = self.registry.get(tool_id, {}).get("name", tool_id) + if item_text == expected or item_text == tool_id: + row = r + break + + if row < 0: + return + + checks = result.get("checks", []) + score = result.get("score", 0) + location = result.get("install_location", "") + + # Build a check-name -> passed map + check_map = {c["name"]: c["passed"] for c in checks} + + # Score cell (colour-coded) + score_item = QTableWidgetItem(f"{score}%") + if score >= 80: + score_item.setForeground(QColor("#2ecc71")) + elif score >= 50: + score_item.setForeground(QColor("#f39c12")) + else: + score_item.setForeground(QColor("#e74c3c")) + score_item.setFont(QFont("Segoe UI", 10, QFont.Bold)) + self.table.setItem(row, 2, score_item) + + # Individual checks: columns 3-10 + check_columns = [ + "Native Install", "Filesystem Compliance", + "Config Redirect", "Cache Redirect", "Logs Redirect", + "Launcher Accessible", "Version Detection", "Health Check", + ] + for idx, check_name in enumerate(check_columns): + col = 3 + idx + passed = check_map.get(check_name) + if passed is None: + text = "N/A" + color = "#7f8c8d" + elif passed: + text = "PASS" + color = "#2ecc71" + else: + text = "FAIL" + color = "#e74c3c" + item = QTableWidgetItem(text) + item.setForeground(QColor(color)) + self.table.setItem(row, col, item) + + # Location + self.table.setItem(row, 11, QTableWidgetItem(location)) + + def _on_batch_done(self, total: int) -> None: + """Finalize after batch verification completes.""" + self.progress_bar.setVisible(False) + self.btn_verify_all.setEnabled(True) + self.btn_verify_selected.setEnabled(True) + + # Compute summary + scores = [r["score"] for r in self._results.values()] + if scores: + avg = sum(scores) / len(scores) + passing = sum(1 for s in scores if s >= 80) + failing = sum(1 for s in scores if s < 50) + self.lbl_summary.setText( + f"Verified {total} tools | " + f"Average: {avg:.0f}% | " + f"Passing (>=80%): {passing} | " + f"Failing (<50%): {failing}" + ) + else: + self.lbl_summary.setText( + f"No verification results for {total} tools" + ) + + def _apply_filter(self, text: str) -> None: + """Filter visible rows by tool ID substring.""" + filter_lower = text.lower().strip() + for row in range(self.table.rowCount()): + item = self.table.item(row, 0) + if item is None: + continue + visible = ( + not filter_lower + or filter_lower in item.text().lower() + ) + self.table.setRowHidden(row, not visible) + + def refresh(self) -> None: + """Re-populate table from registry (e.g. after tool install).""" + self._results.clear() + self._populate_table() + self.lbl_summary.setText("Ready \u2014 no verifications run yet") diff --git a/src/ai_lsc/ui/protocol.py b/src/ai_lsc/ui/protocol.py new file mode 100644 index 0000000..3e8c03f --- /dev/null +++ b/src/ai_lsc/ui/protocol.py @@ -0,0 +1,67 @@ +""" +AI-LSC — Main window protocol. + +Defines the interface that all UI page widgets expect from their parent +(main window) via a ``typing.Protocol``. This decouples the pages from +the concrete ``AILocalStackControl`` god class so they can be tested and +refactored independently. + +Every ``self.parent`` / ``self.main`` attribute access in the page widgets +is documented here. During Phase 2 extraction the widgets continue to +receive the concrete main window; in Phase 3 the main window formally +implements this protocol. +""" + +from __future__ import annotations + +from typing import Protocol, runtime_checkable + + +@runtime_checkable +class MainWindowProtocol(Protocol): + """Minimal interface that every UI page widget expects from its parent. + + Attributes + ---------- + base_dir : str + tools_root : str + models_root : str + workspaces_root : str + logs_root : str + exports_root : str + config_root : str + skills_root : str + datasets_root : str + base_bin_dir : str + dtach_bin : str | None + registry_mgr : RegistryManager-like + nav_stack : QStackedWidget-like + skills_console_tab : SkillsConsole-like + """ + + # ── Paths (read-only) ────────────────────────────────────────────── + base_dir: str + tools_root: str + models_root: str + workspaces_root: str + logs_root: str + exports_root: str + config_root: str + skills_root: str + datasets_root: str + base_bin_dir: str + dtach_bin: str | None + + # ── Services ───────────────────────────────────────────────────── + registry_mgr: object # ai_lsc.registry.manager.RegistryManager + nav_stack: object # QStackedWidget + skills_console_tab: object # SkillsConsole widget + runtime: object # ai_lsc.runtime.executor.RuntimeExecutor + + # ── Methods ─────────────────────────────────────────────────────── + def log(self, message: str, source: str = "") -> None: ... + def refresh_all_models(self) -> None: ... + def verify_and_watch(self, log_file: str) -> None: ... + def sync_chat_workspace_dropdown(self) -> None: ... + def _populate_services(self) -> None: ... + def finalize_stack_export(self, backend: str) -> None: ... diff --git a/src/ai_lsc/utils/__init__.py b/src/ai_lsc/utils/__init__.py new file mode 100644 index 0000000..c2e1233 --- /dev/null +++ b/src/ai_lsc/utils/__init__.py @@ -0,0 +1 @@ +"""AI-LSC utilities sub-package.""" diff --git a/src/ai_lsc/utils/filesystem.py b/src/ai_lsc/utils/filesystem.py new file mode 100644 index 0000000..efc4a46 --- /dev/null +++ b/src/ai_lsc/utils/filesystem.py @@ -0,0 +1,59 @@ +""" +AI-LSC — Filesystem helpers. + +Directory creation, file watching, and tree-traversal utilities used +by both UI and orchestration code. All path operations use +:mod:`pathlib`. +""" + +from __future__ import annotations + +from pathlib import Path + +from ai_lsc.constants import BASE_DIR, REQUIRED_DIRS, TREE_SKIP_PATTERNS + + +def ensure_base_dirs(base_dir: str | Path | None = None) -> list[Path]: + """Create all required sub-directories under *base_dir*. + + Returns the list of created (or already-existing) directories. + """ + root = Path(base_dir) if base_dir is not None else Path(BASE_DIR) + created: list[Path] = [] + for rel in REQUIRED_DIRS: + p = root / rel + p.mkdir(parents=True, exist_ok=True) + created.append(p) + return created + + +def walk_tree( + root: str | Path, + skip_patterns: set[str] | None = None, + max_depth: int = 4, +) -> list[Path]: + """Recursively collect files, honouring *skip_patterns* and *max_depth*. + + Only files (not directories) are returned. The default skip set + matches ``TREE_SKIP_PATTERNS``. + """ + root = Path(root) + skip = skip_patterns or TREE_SKIP_PATTERNS + results: list[Path] = [] + + def _walk(directory: Path, depth: int) -> None: + if depth > max_depth: + return + try: + for entry in sorted(directory.iterdir()): + if entry.name in skip: + continue + if entry.is_dir(): + _walk(entry, depth + 1) + else: + results.append(entry) + except PermissionError: + pass + + _walk(root, 0) + return results diff --git a/src/ai_lsc/utils/logging.py b/src/ai_lsc/utils/logging.py new file mode 100644 index 0000000..da306fc --- /dev/null +++ b/src/ai_lsc/utils/logging.py @@ -0,0 +1,73 @@ +""" +AI-LSC — Centralised logging. + +The monolith did not use ``logging`` at all; messages were appended to +a QTextEdit via Qt signals. This module sets up a root logger that +*also* writes to a rotating file so we get persistent logs even when +the GUI is not running. + +Usage:: + + from ai_lsc.utils.logging import get_logger + + log = get_logger("service_row") + log.info("Ollama started on port 11434") +""" + +from __future__ import annotations + +import logging +import sys +from pathlib import Path + + +def setup_logging( + log_dir: str | Path | None = None, + level: int = logging.INFO, +) -> logging.Logger: + """Configure the root ``ai_lsc`` logger with console + file output. + + Parameters + ---------- + log_dir: + Directory for the log file. If *None*, logs go to console only. + level: + Logging verbosity. + """ + root = logging.getLogger("ai_lsc") + root.setLevel(level) + + # Avoid duplicate handlers on repeated calls + if root.handlers: + return root + + fmt = logging.Formatter( + "%(asctime)s %(levelname)-8s %(name)-20s %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + ) + + # Console handler + ch = logging.StreamHandler(sys.stdout) + ch.setLevel(level) + ch.setFormatter(fmt) + root.addHandler(ch) + + # File handler (optional) + if log_dir is not None: + log_dir = Path(log_dir) + log_dir.mkdir(parents=True, exist_ok=True) + fh = logging.FileHandler(log_dir / "ai_lsc.log", encoding="utf-8") + fh.setLevel(level) + fh.setFormatter(fmt) + root.addHandler(fh) + + return root + + +def get_logger(name: str) -> logging.Logger: + """Return a child logger under the ``ai_lsc`` namespace. + + ``name`` should be the module or component name, e.g. ``"registry"`` + or ``"service_row"``. + """ + return logging.getLogger(f"ai_lsc.{name}") diff --git a/src/ai_lsc/utils/ollama.py b/src/ai_lsc/utils/ollama.py new file mode 100644 index 0000000..31bcd80 --- /dev/null +++ b/src/ai_lsc/utils/ollama.py @@ -0,0 +1,87 @@ +"""Ollama server path resolution and environment helpers. + +Probes multiple candidate paths under ``BASE_DIR`` to locate +the ollama server binary, data directory, and configuration. All other +modules should import from here instead of hardcoding paths. + +Detection order (first match wins): + 1. ``/ollama`` + 2. ``/tools/ollama`` + 3. ``/runtime/ollama`` + 4. ``/bin/ollama`` + 5. System PATH fallback via ``shutil.which("ollama")`` +""" + +from __future__ import annotations + +import os +import shutil +from pathlib import Path + + +def detect_ollama_server_dir(base_dir: str) -> str: + """Return the first candidate ollama server directory that exists. + + Probes paths defined in ``OLLAMA_SERVER_CANDIDATES`` under *base_dir*. + Falls back to the parent of the system ``ollama`` binary if none of + the managed paths exist. + """ + from ai_lsc.constants import OLLAMA_SERVER_CANDIDATES + + for rel in OLLAMA_SERVER_CANDIDATES: + full = os.path.join(base_dir, rel) + if os.path.isdir(full): + return full + + # System PATH fallback + system_bin = shutil.which("ollama") + if system_bin: + return str(Path(system_bin).resolve().parent.parent) + + # Default: first candidate (will be created on install) + return os.path.join(base_dir, OLLAMA_SERVER_CANDIDATES[0]) + + +def ollama_models_dir(base_dir: str) -> str: + """Return the models directory for ollama. + + Checks both the dedicated ``models/ollama`` tree and the ollama + server's own ``~/.ollama/models`` directory. + """ + primary = os.path.join(base_dir, "models", "ollama") + if os.path.isdir(primary): + return primary + return os.path.join(detect_ollama_server_dir(base_dir), "models") + + +def ollama_env(base_dir: str) -> dict[str, str]: + """Build the environment dict for ollama commands. + + Sets ``OLLAMA_MODELS`` and ``OLLAMA_HOST`` to use managed paths + under *base_dir*. + """ + return { + "OLLAMA_MODELS": ollama_models_dir(base_dir), + "OLLAMA_HOST": "127.0.0.1:11434", + } + + +def ollama_binary(base_dir: str) -> str | None: + """Find the ollama binary path. + + Checks the managed ``bin`` directories first, then falls back to + the system PATH. + """ + from ai_lsc.constants import OLLAMA_SERVER_CANDIDATES + + for rel in OLLAMA_SERVER_CANDIDATES: + candidate = os.path.join(base_dir, rel, "bin", "ollama") + if os.path.isfile(candidate): + return candidate + + return shutil.which("ollama") + + +def ollama_is_installed(base_dir: str) -> bool: + """Return True if ollama appears to be installed (binary found).""" + return ollama_binary(base_dir) is not None diff --git a/src/ai_lsc/utils/paths.py b/src/ai_lsc/utils/paths.py new file mode 100644 index 0000000..2a90787 --- /dev/null +++ b/src/ai_lsc/utils/paths.py @@ -0,0 +1,82 @@ +""" +AI-LSC — Centralised path definitions. + +Every path in the application is derived from ``BASE_DIR`` +using :mod:`pathlib`. Import these in UI and orchestration code +instead of constructing paths with ``os.path.join`` ad-hoc. +""" + +from __future__ import annotations + +from pathlib import Path + +from ai_lsc.constants import BASE_DIR, REQUIRED_DIRS + + +def build_path_tree(base_dir: str | Path | None = None) -> dict[str, Path]: + """Return a dict of well-known absolute paths under *base_dir*. + + The dict keys match the attribute names that ``AILocalStackControl`` + currently assigns in ``__init__``, so migrating consumers is a + mechanical find-and-replace. + + Parameters + ---------- + base_dir: + Override the default ``BASE_DIR``. Useful for tests. + + Returns + ------- + dict[str, Path] + Example:: + + { + "base_dir": Path("/mnt/AI"), + "tools_root": Path("/mnt/AI/tools"), + "models_root": Path("/mnt/AI/models"), + "logs_root": Path("/mnt/AI/logs"), + "skills_root": Path("/mnt/AI/skills"), + "datasets_root": Path("/mnt/AI/datasets"), + "config_root": Path("/mnt/AI/config"), + "workspaces_root": Path("/mnt/AI/workspaces"), + "exports_root": Path("/mnt/AI/exports"), + "registry_root": Path("/mnt/AI/registry"), + } + """ + root = Path(base_dir) if base_dir is not None else Path(BASE_DIR) + return { + "base_dir": root, + "tools_root": root / "tools", + "models_root": root / "models", + "logs_root": root / "logs", + "skills_root": root / "skills", + "datasets_root": root / "datasets", + "config_root": root / "config", + "workspaces_root": root / "workspaces", + "exports_root": root / "exports", + "registry_root": root / "registry", + } + + +def resolve_launcher_cmd( + cmd_template: str, + base_dir: str | Path | None = None, + port: int | None = None, + model_arg: str = "", +) -> str: + """Resolve ``{placeholder}`` tokens in a launcher command template. + + Recognised placeholders (case-sensitive): + ``{port}``, ``{base_dir}``, ``{tools_root}``, + ``{models_root}``, ``{workspaces_root}``, ``{model_arg}`` + """ + paths = build_path_tree(base_dir) + return ( + cmd_template + .replace("{port}", str(port or "")) + .replace("{base_dir}", str(paths["base_dir"])) + .replace("{tools_root}", str(paths["tools_root"])) + .replace("{models_root}", str(paths["models_root"])) + .replace("{workspaces_root}", str(paths["workspaces_root"])) + .replace("{model_arg}", model_arg) + ) diff --git a/src/ai_lsc/utils/process.py b/src/ai_lsc/utils/process.py new file mode 100644 index 0000000..df89b47 --- /dev/null +++ b/src/ai_lsc/utils/process.py @@ -0,0 +1,128 @@ +""" +AI-LSC — Process utilities. + +Wrappers around ``subprocess``, ``shutil.which``, ``psutil``, and +environment construction. Every subprocess call in the application +should go through one of these helpers so we get consistent PATH +enrichment and timeout handling in one place. +""" + +from __future__ import annotations + +import os +import shutil +import subprocess +from pathlib import Path +from typing import Sequence + + +def enriched_env(extra_bin_dirs: str | Sequence[str] = "") -> dict[str, str]: + """Return a copy of ``os.environ`` with extra dirs prepended to PATH. + + Parameters + ---------- + extra_bin_dirs: + One or more directory paths to prepend, separated by ``:`` + (if a single string) or as an iterable. + """ + env = os.environ.copy() + + # Remap ~/.local to /mnt/AI/tools/.local so that pip/pipx/uv + # user installs land in the managed tools directory instead of + # leaking into the user's home directory. + from ai_lsc.constants import BASE_DIR + managed_local = os.path.join(BASE_DIR, "tools", ".local", "bin") + home_local = str(Path.home() / ".local" / "bin") + + if isinstance(extra_bin_dirs, str): + dirs = [d.strip() for d in extra_bin_dirs.split(":") if d.strip()] + else: + dirs = list(extra_bin_dirs) + + extra = ":".join(d for d in dirs if d) + # Prefer managed ~/.local over real ~/.local + bin_dirs = [] + if extra: + bin_dirs.append(extra) + if os.path.isdir(managed_local): + bin_dirs.append(managed_local) + if home_local not in bin_dirs: + bin_dirs.append(home_local) + + env["PATH"] = ":".join(d for d in bin_dirs if d) + ":" + env.get("PATH", "") + return env + + +def find_binary(*candidates: str) -> str | None: + """Return the first candidate found on ``$PATH``, or ``None``.""" + return next( + (c for c in candidates if shutil.which(c)), + None, + ) + + +def run_subprocess( + cmd: str | list[str], + timeout: float = 120.0, + capture: bool = True, + env: dict[str, str] | None = None, + cwd: str | Path | None = None, +) -> subprocess.CompletedProcess: + """Centralised subprocess runner. + + Parameters + ---------- + cmd: + Command string or arg list. + timeout: + Max seconds before killing the process. + capture: + If *True* (default), capture stdout/stderr. + env: + Override environment (else inherits current). + cwd: + Working directory. + """ + return subprocess.run( + cmd if isinstance(cmd, list) else cmd, + timeout=timeout, + capture_output=capture, + text=True, + env=env or None, + cwd=str(cwd) if cwd else None, + ) + + +# ── psutil helpers ──────────────────────────────────────────────────── + +def _process_matches(proc, search_term: str) -> bool: + """Check if a process matches *search_term* by name or cmdline.""" + try: + cmdline = " ".join(proc.info.get("cmdline") or []) + return ( + search_term in (proc.info.get("name") or "") + or search_term in cmdline + ) + except Exception: + # psutil.NoSuchProcess / AccessDenied / Zombie + return False + + +def first_matching_process(search_term: str): + """Return the first ``psutil.Process`` whose name/cmdline matches.""" + import psutil + return next( + (p for p in psutil.process_iter(["name", "cmdline"]) + if _process_matches(p, search_term)), + None, + ) + + +def cpu_load_for_processes(search_term: str) -> float: + """Return the aggregate CPU % for all matching processes.""" + import psutil + return sum( + p.cpu_percent(interval=0.1) + for p in psutil.process_iter(["name", "cmdline"]) + if _process_matches(p, search_term) + )

Source: " + "git.dcos.net/dcosnet/ai-lsc