{"id":51339682,"url":"https://github.com/semcod/nlp2cmd","last_synced_at":"2026-07-02T06:04:50.697Z","repository":{"id":334105595,"uuid":"1140072576","full_name":"semcod/nlp2cmd","owner":"semcod","description":"NLP2CMD - Transforms natural language into domain-specific commands (SQL, Shell, Docker, Kubernetes) using a multi-layered detection pipeline and thermodynamic optimization.","archived":false,"fork":false,"pushed_at":"2026-06-18T12:39:57.000Z","size":109481,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-18T13:09:19.845Z","etag":null,"topics":["cli","command-generation","docker","dsl","kubernetes","mcp","natural-language-processing","nlp","python","semcod","shell","sql","wronai"],"latest_commit_sha":null,"homepage":"https://semcod.github.io/nlp2cmd/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-22T19:43:36.000Z","updated_at":"2026-06-18T12:40:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/nlp2cmd","commit_stats":null,"previous_names":["wronai/nlp2cmd"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/nlp2cmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fnlp2cmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fnlp2cmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fnlp2cmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fnlp2cmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/nlp2cmd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fnlp2cmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35035009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-generation","docker","dsl","kubernetes","mcp","natural-language-processing","nlp","python","semcod","shell","sql","wronai"],"created_at":"2026-07-02T06:04:49.784Z","updated_at":"2026-07-02T06:04:50.657Z","avatar_url":"https://github.com/semcod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![img.png](img.png)\n\n# NLP2CMD\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![PyPI Version](https://img.shields.io/pypi/v/nlp2cmd.svg)](https://pypi.org/project/nlp2cmd/)\n[![1543+ Tests](https://img.shields.io/badge/tests-1543%2B-brightgreen.svg)](https://github.com/wronai/nlp2cmd)\n\n\n## AI Cost Tracking\n\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$162.85-red) ![AI Model](https://img.shields.io/badge/AI%20Model-openrouter%2Fdeep%2Fdeep-v4-pro-lightgrey)\n\nThis project uses AI-generated code. Total cost: **$162.8466** with **299** AI commits.\n\nGenerated on 2026-06-29 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/models/openrouter/deep/deep-v4-pro)\n\n---\n\n**Natural Language → Domain-Specific Commands** — production-ready framework for transforming natural language (Polish + English) into shell, SQL, Docker, Kubernetes, browser automation, and desktop GUI commands.\n\n## Quick Start\n\n```bash\npip install nlp2cmd[all]\nnlp2cmd cache auto-setup          # Setup Playwright browsers\n\n# Single commands\nnlp2cmd \"uruchom usługę nginx\"    # → systemctl start nginx\nnlp2cmd \"znajdź pliki większe niż 100MB\"  # → find . -type f -size +100MB\n\n# Multi-step browser automation\nnlp2cmd -r \"otwórz openrouter.ai, wyciągnij klucz API i zapisz do .env\"\n\n# Canvas drawing with video recording\nnlp2cmd -r \"wejdź na jspaint.app i narysuj biedronkę\" --video webm\nnlp2cmd -r \"wejdź na jspaint.app i narysuj pająka\" --video webm\nnlp2cmd -r \"wejdź na jspaint.app i narysuj psa\" --video webm\nnlp2cmd -r \"wejdź na jspaint.app i narysuj kota\" --video webm\nnlp2cmd -r \"wejdź na jspaint.app i narysuj dziecko\" --video webm\n\n\n# Web form filling\nnlp2cmd -r \"otwórz https://example.com/kontakt i wypełnij formularz i wyślij\"\n```\n\n## Integracja z nlp2dsl / Propact\n\nnlp2cmd to **runner** — planowanie i wykonanie. **Struktura zapytania** (IntentIR) pochodzi z pakietów nlp2dsl; na wejściu każdego zapytania uruchamiana jest analiza nlp2dsl.\n\n| Narzędzie | Rola |\n|-----------|------|\n| `nlp2dsl show` | Tylko struktura (IntentIR) — bez wykonania |\n| `nlp2cmd plan` | Plan → Propact markdown; `--execute` → hybrid executor |\n| `nlp2cmd -q … -r` | Legacy runtime (shell / browser / canvas) |\n\n### Routing wykonania (`--execute`)\n\n| `target_kind` | Executor |\n|---------------|----------|\n| `shell`, `rest`, `mcp`, `ws` | Propact (shell: fallback subprocess gdy brak CLI) |\n| `browser`, `sql`, `desktop` | nlp2cmd `PipelineRunner` |\n\n`--explain` / `--json` pokazują `execution_routes` per krok.\n\n### Instalacja (dev, monorepo)\n\n```bash\n# Zalecane — jedna komenda (nlp2dsl packages + nlp2cmd[integration])\ncd nlp2cmd \u0026\u0026 make update\n\n# lub ręcznie:\ncd ../nlp2dsl \u0026\u0026 ./scripts/setup-dev.sh\n\nexport NLP2CMD_INTEGRATION=1\nexport LANG=C.UTF-8\n```\n\n\u003e **Uwaga:** `nlp2cmd` wymaga pakietów z `nlp2dsl/packages/` (editable).\n\u003e Uruchamiaj CLI z **tego samego venv** co `make update` (`which nlp2cmd` → `.venv/bin/nlp2cmd`).\n\u003e Stary `~/.local/bin/nlp2cmd` nie widzi integracji.\n\n```bash\nmake update          # przeinstaluj zależności integracji (--upgrade)\nmake publish         # update + bump patch + PyPI (nie uruchamiaj bez potrzeby)\n```\n\n### Przykłady\n\n```bash\n# Struktura zapytania (nlp2dsl — bez wykonania)\nnlp2dsl show \"znajdz pliki *.py w src\"\nnlp2dsl show \"znajdz pliki *.py w src\" --plan\n\n# Plan + Propact (nlp2cmd)\nnlp2cmd plan \"znajdz pliki *.py w src\"\nnlp2cmd plan \"znajdz pliki *.py w src\" --explain\nnlp2cmd plan \"znajdz pliki *.py w src\" --json\nnlp2cmd plan \"znajdz pliki *.py w src\" --execute\n\n# Workflow REST (backend nlp2dsl)\nexport NLP2CMD_NLP2DSL_WORKFLOW=1 NLP2DSL_BACKEND_URL=http://127.0.0.1:8010\nnlp2cmd plan \"Wyslij fakture na 1500 PLN do a@b.pl\" --json\n\n# Analiza wejścia przy zwykłym generate/run\nNLP2CMD_SHOW_STRUCTURE=1 nlp2cmd -q \"znajdz pliki *.py w src\"\nnlp2cmd -q \"znajdz pliki *.py w src\" --explain\n```\n\n### Zmienne środowiskowe\n\n| Zmienna | Domyślnie | Opis |\n|---------|-----------|------|\n| `NLP2CMD_INTEGRATION` | `0` | Włącza `nlp2cmd plan` i bridge do pakietów nlp2dsl |\n| `NLP2CMD_QUERY_INPUT` | `1` | Analiza IntentIR na wejściu (`-q`, `-r`, `plan`) |\n| `NLP2CMD_SHOW_STRUCTURE` | `0` | Zawsze pokaż analizę tekstu |\n| `NLP2CMD_NLP2DSL_WORKFLOW` | `0` | Planner REST via `/workflow/from-text` |\n| `NLP2DSL_BACKEND_URL` | `http://localhost:8010` | Backend nlp2dsl |\n| `NLP2CMD_PROPACT_BIN` | `propact` | Ścieżka do Propact CLI |\n| `NLP2CMD_PROPACT_FALLBACK` | `shell` | Subprocess gdy brak propact (tylko shell-only) |\n| `NLP2CMD_INTRACT_GATE` | `0` | Intract: `plan`, `show --plan`, transform (`-q`), `PipelineRunner`, kroki DOM |\n| `NLP2CMD_ENFORCE_CLARIFICATION` | `0` | `nlp2dsl show` blokuje niską pewność (`plan` — zawsze) |\n| `NLP2CMD_POST_CHECK` | `0` | Po `plan --execute`: walidacja stdout vs oczekiwanie |\n| `NLP2CMD_POST_CHECK_STRICT` | `0` | Post-check: ostrzeżenia → błędy |\n| `NLP2CMD_EMIT_TESTQL` | `0` | Eksport scenariusza TestQL z execution record (browser) |\n| `LANG` | — | `C.UTF-8` dla polskich znaków |\n\nPakiet `KeywordIntentDetector` jest kanonicznie w `nlp2cmd-intent`; nlp2cmd re-eksportuje go z `nlp2cmd.generation.keywords`.\n\n`nlp2dsl-run` jest **deprecated** — użyj `nlp2cmd plan`.\n\n### Intract — kontrakty przed wykonaniem\n\nOpcjonalna warstwa policy ([Intract](https://github.com/semcod/intract)): zakazane efekty, wymagane inputy, zgodność z `intract.yaml`. **Nie** weryfikuje stdout.\n\n```mermaid\nflowchart TB\n    subgraph integration [Ścieżka plan / show]\n        I[IntentIR] --\u003e P[ExecutionPlanIR]\n        P --\u003e PG[PlanStepGate]\n    end\n\n    subgraph legacy [Ścieżka -q -r]\n        T[NLP2CMD.transform] --\u003e TV[TransformValidator]\n        TV --\u003e PR[PipelineRunner]\n        PR --\u003e PG2[PipelineRunnerGate]\n        PR --\u003e SG[IntractStepGate — DOM]\n    end\n\n    PG --\u003e RB[RuntimeBridge]\n    TV --\u003e RB\n    PG2 --\u003e RB\n    SG --\u003e RB\n    RB --\u003e M[intract.yaml + bindings.json]\n```\n\n```bash\nexport NLP2CMD_INTEGRATION=1\nexport NLP2CMD_INTRACT_GATE=1\n\nnlp2cmd plan \"znajdź pliki *.py w src\" --json    # pole contract_check\nnlp2dsl show \"znajdź pliki *.py w src\" --plan    # contract_check w output\nnlp2cmd -q \"znajdź pliki *.py\" -r                # transform + pre-execute gate\n```\n\nSzczegóły: [`docs/architecture/intract-integration.md`](docs/architecture/intract-integration.md)\n\n### Post-execution — stdout vs oczekiwanie\n\nOsobna warstwa od Intract: sprawdza **wynik** wykonania (linie stdout, regex, returncode).\n\n```mermaid\nflowchart LR\n    EX[plan --execute] --\u003e OUT[stdout/stderr]\n    OUT --\u003e PC[PostExecutionChecker]\n    PC --\u003e|NLP2CMD_POST_CHECK=1| OK[passed / violations]\n```\n\n```bash\nexport NLP2CMD_POST_CHECK=1\nnlp2cmd plan \"znajdź pliki *.py w src\" --execute --explain\n```\n\nSzczegóły: [`docs/architecture/post-execution-validation.md`](docs/architecture/post-execution-validation.md)\n\n## Key Features\n\n### Multi-Step Browser Automation (v1.1.0)\n\nComplex queries are automatically detected and decomposed into executable action plans:\n\n```bash\nnlp2cmd -r \"otwórz tab w firefox wyciągnij klucz API z OpenRouter i zapisz do .env\"\n# → domain=multi_step, 7 steps: navigate → check_session → click → wait → extract_key → prompt_secret → save_env\n```\n\nThe pipeline routes queries through:\n1. **Cache** — instant lookup of previously seen multi-step patterns\n2. **ComplexQueryDetector** — regex-based multi-step detection (~0.1ms)\n3. **ActionPlanner** — rule-based decomposition for known services (10 API providers)\n4. **KeywordIntentDetector** — single-command keyword matching (1615 templates)\n\n### 16 Domains (1615+ Templates)\n\n| Domain | Examples |\n|--------|----------|\n| **Shell** | find, ls, grep, ps, du, df, tar, chmod, systemctl |\n| **Docker** | container, image, compose, volume, network |\n| **SQL** | SELECT, INSERT, CREATE, JOIN, window functions |\n| **Kubernetes** | kubectl, pods, deployments, services, helm |\n| **Browser** | Playwright automation, form filling, site exploration |\n| **Git** | commit, branch, merge, rebase, stash, tag |\n| **DevOps** | systemctl, Ansible, Terraform, CI/CD, nginx, cron |\n| **API** | curl, httpie, wget, REST, GraphQL |\n| **FFmpeg** | video/audio conversion, streaming, recording |\n| **Package Mgmt** | apt, pip, npm, yarn, snap, flatpak, brew |\n| **Desktop** | Firefox tabs, Thunderbird, xdotool/ydotool, window mgmt |\n| **Canvas** | jspaint.app drawing (shapes, ladybug, text) |\n| **Remote** | SSH, SCP, rsync, tmux, VPN |\n| **Data** | jq, csvkit, awk, sed, sqlite, pandas |\n| **IoT** | Raspberry Pi GPIO, MQTT, sensors |\n| **RAG** | ChromaDB, Qdrant, embeddings, LangChain |\n\n### Evolutionary Cache — Self-Learning\n\n100% accuracy with Qwen-Coder-3B, 24,355× speedup. Template pipeline + pre-warm cache eliminate 31% of queries without LLM.\n\n```python\nfrom nlp2cmd.generation.evolutionary_cache import EvolutionaryCache\ncache = EvolutionaryCache()\nr = cache.lookup(\"znajdź pliki PDF większe niż 10MB\")  # template: ~15ms, cached: ~0.015ms\nr = cache.lookup(\"znajdz pliki PDF wieksze niz 10MB\")  # typo → similarity hit!\n```\n\n### LLM Validation \u0026 Self-Repair\n\nEvery command result is automatically validated by a local LLM (`qwen2.5:3b` via Ollama). If the validator marks a result as **fail**, a cloud LLM (OpenRouter) suggests an improved command and optionally patches `patterns.json`/`templates.json` so the pipeline learns from the mistake.\n\n```\nExecute command → stdout/stderr\n       ↓\nLLM_VALIDATOR (local, ~0.5s)\n  query + command + output → pass/fail + score + reason\n       ↓ fail?\nLLM_REPAIR (OpenRouter cloud)\n  full context → improved_command + JSON patches\n       ↓\nRetry + update data files\n```\n\n```bash\n# Example output after command execution:\nllm_validator: pass\nscore: 0.90\nreason: Found 1 camera with RTSP on the local network.\nmodel: qwen2.5:3b\n```\n\nConfiguration in `.env`:\n```bash\nLLM_VALIDATOR_ENABLED=true          # enabled by default\nLLM_VALIDATOR_MODEL=qwen2.5:3b     # local Ollama model\nLLM_REPAIR_ENABLED=true            # cloud repair on fail\nLLM_REPAIR_MODEL=qwen/qwen-2.5-coder-32b-instruct\n```\n\nTest suite: `python3 examples/08_llm_validation/test_validator.py` — 15 test cases, 100% accuracy with `qwen2.5:3b`.\n\n### LLM Router — Multi-Model Routing\n\nSmart routing across multiple LLM providers with automatic fallbacks: **paid remote → free remote → local Ollama**.\n\n```\nUser prompt → classify_task() → LiteLLM Router\n                                  ├── Remote (paid)   — Gemini 2.5 Pro, Qwen2.5-Coder-32B\n                                  ├── Remote (free)   — Qwen2.5-VL-7B, Arcee Trinity\n                                  └── Local (Ollama)  — qwen2.5:7b, qwen2.5-coder:7b, bielik\n```\n\n8 task specializations: **vision**, **coding**, **text**, **polish**, **repair**, **validation**, **fast**, **planning** — each with dedicated model chains. Even with zero API credits, all tasks work via local models.\n\n```python\nfrom nlp2cmd.llm.router import get_router\n\nrouter = get_router()\nresp = await router.auto_completion(\"napisz zapytanie SQL dla tabeli users\")\n# → task=coding, model=qwen2.5-coder, content=\"SELECT * FROM users;\"\n```\n\nFull configuration guide: [Config README](config/README.md)\n\n### Declarative Feedback Loop (Browser Automation)\n\nComplex multi-step browser automation uses a **schema-driven feedback loop** — each step is validated, failures are classified, and repairs are escalated until a solution is found.\n\n```\nStep Schema (declarative)\n    ↓\nExecute step → Validate result (pre/post)\n    ↓ failed?\nClassify failure:\n  schema_error      → wrong selector/URL     → Page analysis (DOM scan)\n  page_state_error  → redirect/CAPTCHA/modal  → Navigate to correct page\n  data_error        → not logged in / no key   → Login flow / create key\n  handling_error    → browser crash / timeout   → Retry / escalate\n    ↓\nRepair escalation:\n  1. Rule-based         ~0ms    (selector alternatives)\n  2. Page analysis      ~50ms   (DOM scan for elements)\n  3. Local LLM          ~500ms  (qwen2.5:3b diagnosis)\n  4. Cloud LLM          ~2s     (OpenRouter 32B repair)\n    ↓\nRetry with repaired params (max 5 attempts)\n```\n\nProvider-agnostic: works across HuggingFace, OpenRouter, Anthropic, GitHub, Groq, and any SaaS site without hardcoded URLs — `PageAnalyzer` dynamically finds API key sections by scanning navigation links.\n\nTest suite: `python3 examples/08_llm_validation/test_feedback_loop.py` — 19 test cases (failure classification + page analysis + multi-provider), 100% accuracy.\n\n### Polish Language Support\n\nNative Polish NLP with 87%+ accuracy: lemmatization, fuzzy matching, diacritic normalization.\n\n```bash\nnlp2cmd \"zainstaluj vlc\"                    # → sudo apt-get install vlc\nnlp2cmd \"pokaż procesy zużywające pamięć\"   # → ps aux --sort=-%mem | head -10\nnlp2cmd \"znajdź pliki .log starsze niż 2 dni\"  # → find . -type f -name \"*.log\" -mtime +2\n```\n\n### Desktop GUI Automation\n\nControl desktop applications through natural language — works on both X11 and Wayland:\n\n```bash\nnlp2cmd -r \"otwórz tab w firefox, wyciągnij klucz API z OpenRouter i zapisz do .env\"\nnlp2cmd -r \"wejdź na jspaint.app i narysuj biedronkę\" --video webm\nnlp2cmd -r \"otwórz Thunderbird i sprawdź pocztę\"\nnlp2cmd -r \"zminimalizuj wszystko\"\n```\n\nSupported API services for key extraction: OpenRouter, Anthropic, OpenAI, Groq, Mistral, DeepSeek, Together, GitHub, HuggingFace, Replicate.\n\n## Video Recording\n\n![img_10.png](img_10.png)\n\nRecord entire browser automation sessions with video output:\n\n```bash\n# Full session recording (WebM format)\nnlp2cmd -r \"otwórz tab w firefox wyciągnij klucz API z OpenRouter i zapisz do .env\" --video webm --execute-web\n\n# Short video clips (3-10 seconds)\nnlp2cmd -r \"wejdź na jspaint.app i narysuj koło\" --video webm --duration 5\n```\n\n\n**Demo Recording**: [nlp2cmd-operouter-token.mp4](nlp2cmd-operouter-token.mp4) - Firefox automation with API key extraction\n\n### Web Form Filling \u0026 Site Exploration\n\n```bash\nnlp2cmd -r \"otwórz https://example.com/kontakt i wypełnij formularz i wyślij\"\nnlp2cmd -r \"wejdź na strona-docelowa.pl i wypełnij formularz kontaktu\"\n# → Automatically explores site, finds contact form, fills with .env data\n```\n\n### Deep Company Extraction\n\n```bash\nnlp2cmd -r \"wejdź na https://katalog-stron.pl/firmy, znajdź strony www firm i zapisz do firmy.csv\"\n# → Navigates profiles, extracts external websites, saves to CSV\n```\n\n## Architecture\n\n```\nQuery → [Cache] → [ComplexDetector] → [ActionPlanner] → [KeywordDetector] → [TemplateGenerator]\n                                           ↓                    ↓\n                                    ActionPlan (multi-step)   SingleCommand\n                                           ↓                    ↓\n                                    PipelineRunner ←────────────┘\n                                    ├── ShellExecutionMixin\n                                    ├── BrowserExecutionMixin\n                                    ├── DesktopExecutionMixin\n                                    └── PlanExecutionMixin\n```\n\n**PipelineRunner** is split into 4 mixins (~4400 LOC total) for maintainability:\n\n| Module | Lines | Responsibility |\n|--------|-------|---------------|\n| `pipeline_runner.py` | 170 | Core class, mixin composition |\n| `pipeline_runner_shell.py` | 217 | Shell execution, safety policies |\n| `pipeline_runner_browser.py` | 1561 | DOM/DQL, multi-action browser automation |\n| `pipeline_runner_desktop.py` | 389 | xdotool/ydotool/wmctrl desktop control |\n| `pipeline_runner_plans.py` | 2277 | Multi-step ActionPlan execution |\n\n## Installation\n\n```bash\n# Full installation\npip install nlp2cmd[all]\n\n# Specific components\npip install nlp2cmd[browser,nlp]    # Web automation + Polish NLP\npip install nlp2cmd[sql,shell]      # Database + system commands\n\n# Desktop automation tools\nnlp2cmd-install-desktop\n# or: make install-desktop\n\n# Setup Playwright browsers\nnlp2cmd cache auto-setup\n```\n\n## CLI Usage\n\n```bash\n# Generate command\nnlp2cmd \"pokaż pliki użytkownika\"           # → find $HOME -type f\nnlp2cmd --dsl sql \"pokaż użytkowników\"      # → SELECT * FROM users\n\n# Execute immediately (run mode)\nnlp2cmd -r \"list files\" --auto-confirm\n\n# Multi-step with video\nnlp2cmd -r \"wejdź na jspaint.app i narysuj biedronkę\" --video webm\n\n# Full session recording\nnlp2cmd -r \"otwórz tab w firefox wyciągnij klucz API z OpenRouter i zapisz do .env\" --video webm --execute-web\n\n# Interactive mode\nnlp2cmd --interactive\n\n# Web automation\nnlp2cmd web-schema extract https://example.com\nnlp2cmd web-schema history --stats\n\n# Cache management\nnlp2cmd cache info\nnlp2cmd cache auto-setup\nnlp2cmd cache full-clear --yes\n\n# Service mode (HTTP API)\nnlp2cmd service --host 0.0.0.0 --port 8000\n\n# Diagnostics\nnlp2cmd doctor --fix\nnlp2cmd --show-decision-tree \"zapytanie\"\nnlp2cmd --show-schema\n\n# nlp2dsl / Propact integration (requires nlp2cmd[integration])\nnlp2cmd plan \"znajdź pliki *.py w src\"\nnlp2cmd plan \"znajdź pliki *.py w src\" --execute\nnlp2dsl show \"znajdź pliki *.py w src\"   # structure only\n```\n\n## Python API\n\n```python\nfrom nlp2cmd.generation.pipeline import RuleBasedPipeline\n\npipeline = RuleBasedPipeline()\n\n# Single command\nresult = pipeline.process(\"pokaż pliki w katalogu\")\nprint(result.command)  # ls -la .\n\n# Multi-step (auto-detected)\nresult = pipeline.process(\"otwórz openrouter.ai, wyciągnij klucz API i zapisz do .env\")\nprint(result.domain)       # multi_step\nprint(result.action_plan)  # ActionPlan with 7 steps\n```\n\n```python\n# Execute action plan\nfrom nlp2cmd.pipeline_runner import PipelineRunner\n\nrunner = PipelineRunner()\nresult = runner.execute_action_plan(plan, dry_run=False)\n```\n\n```python\n# Integration bridge (nlp2dsl packages)\nfrom nlp2cmd.bridge import plan_query_via_integration, attach_query_input\n\nattach_query_input(\"znajdź pliki *.py w src\", verbose=True)\npayload = plan_query_via_integration(\"znajdź pliki *.py w src\")\nprint(payload[\"intent_ir\"])\nprint(payload[\"propact_markdown\"])\n```\n\n## Testing\n\n```bash\npytest tests/ -v                    # All 1543+ tests\npytest tests/unit/ -v               # Unit tests\npytest tests/e2e/ -v                # End-to-end tests\npytest --cov=nlp2cmd --cov-report=html  # With coverage\n```\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Project Structure](PROJECT_STRUCTURE.md) | Architecture and module organization |\n| [Installation Guide](INSTALLATION.md) | Setup instructions |\n| [User Guide](docs/guides/user-guide.md) | Complete usage tutorial |\n| [CLI Reference](docs/cli-reference.md) | CLI documentation |\n| [Python API](docs/python-api.md) | Python API guide |\n| [Examples Guide](docs/examples-guide.md) | Examples overview |\n| [Keyword Detection](docs/KEYWORD_DETECTION_FLOW.md) | Intent detection pipeline |\n| [Web Schema Guide](docs/WEB_SCHEMA_GUIDE.md) | Browser automation |\n| [Cache Management](docs/CACHE_MANAGEMENT.md) | Caching system |\n| [Desktop Automation](docs/DESKTOP_GUI_AUTOMATION.md) | Desktop GUI control |\n| [LLM Router Config](config/README.md) | Multi-model routing, fallbacks, specialization |\n| [Canvas Drawing](docs/CANVAS_DRAWING.md) | jspaint.app drawing |\n| [Firefox Sessions](docs/FIREFOX_SESSION_INJECTION.md) | Session injection |\n| [Evolutionary Cache](docs/EVOLUTIONARY_CACHE.md) | Self-learning cache |\n| [Stream Protocols](docs/STREAM_PROTOCOLS.md) | SSH, RTSP, VNC, etc. |\n| [Service Mode](docs/SERVICE_MODE.md) | HTTP API service |\n| [nlp2dsl packages](../nlp2dsl/packages/README.md) | IntentIR, planner, Propact bridge |\n| [Contributing](CONTRIBUTING.md) | Development guidelines |\n\n## License\n\nLicensed under Apache-2.0.\n## Author\n\nTom Sapletta\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fnlp2cmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Fnlp2cmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fnlp2cmd/lists"}