PHPackages                             liquiddesign/liquid-monitor-connector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. liquiddesign/liquid-monitor-connector

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

liquiddesign/liquid-monitor-connector
=====================================

Connector mezi webem a Liquid Monitor

v2.6.1(1w ago)05.8k↓10.8%2MITPHPPHP &gt;=8.1CI passing

Since Oct 4Pushed 1w ago2 watchersCompare

[ Source](https://github.com/liquiddesign/liquid-monitor-connector)[ Packagist](https://packagist.org/packages/liquiddesign/liquid-monitor-connector)[ RSS](/packages/liquiddesign-liquid-monitor-connector/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (49)Versions (81)Used By (2)

Liquid Monitor Connector
========================

[](#liquid-monitor-connector)

Connector mezi webem a Liquid Monitor.

Components
----------

[](#components)

- **`Cron`** (`src/Cron.php`) — Nette DI integrace pro produkční reporting (schedule-job, error logging, health check). Registruje ji `LiquidMonitorConnectorDI`.
- **`LiquidMonitorLoggerDI`** (`src/Bridges/LiquidMonitorLoggerDI.php`) — DI extension, která převezme Tracy logger (`LiquidMonitorLogger`) a posílá aplikační chyby na monitor přes samostatný `ErrorReporter` (`/log`). Funguje **i samostatně bez cronů** — viz [Jen sběr chyb (bez cronů)](#jen-sb%C4%9Br-chyb-bez-cron%C5%AF).
- **`orchestrator:run`** (`bin/orchestrator-run`) — autonomous programming worker. Pollne `/api/orchestrator/worker/poll`, v repo-mode pracuje přímo v repu (volitelně git worktree), spustí **tmux + interaktivní Claude Code REPL** (`send-keys`, `--resume`), doručí brief, parsuje JSON milníky, spustí `composer test` a zapíše `triage_result` zpět na monitor.
- **`orchestrator-init`** (`bin/orchestrator-init`) — jednorázový setup hostu: vygeneruje `/.orchestrator/.env`, doplní `.orchestrator/` do `.gitignore` a ověří kredity proti monitoru.
- **`LiquidMonitorLogViewerDI`** (`src/Bridges/LiquidMonitorLogViewerDI.php`) — DI extension, která vystaví read-only JSON API pro Tracy logy přímo z connectoru. Bundluje balíček [`liquiddesign/nette-log-viewer`](https://github.com/liquiddesign/nette-log-viewer) a registruje jeho routy/presentery, takže hostová aplikace nemusí balíček instalovat ani registrovat zvlášť. Viz [Log viewer](#log-viewer).
- **`LiquidMonitorDbQueryDI`** (`src/Bridges/LiquidMonitorDbQueryDI.php`) — DI extension pro read-only SQL dotazy proti databázi host aplikace (PDO proxy pro monitor orchestrátor). Viz [DB query proxy](#db-query-proxy).

Starý `bin/triage-pull` (read-only `claude -p`) je nahrazen orchestrátorem — nepoužívat.

Jen sběr chyb (bez cronů)
-------------------------

[](#jen-sběr-chyb-bez-cronů)

Projekt nemusí napojovat crony — když chceš jen **sběr chyb** (např. jako vstup pro AI úkoly na monitoru), zaregistruj **samostatně** jen logger s vlastní `url` + `apiKey`:

```
extensions:
    liquidMonitorLogger: LiquidMonitorConnector\Bridges\LiquidMonitorLoggerDI

liquidMonitorLogger:
    url: https://monitor.example/api_connector   # endpoint monitoru
    apiKey: PROJECT_API_KEY                       # API key projektu (Nette SDK)
    # enabled: true
    # levels: [error, exception, critical, warning, info]   # filtr odesílaných úrovní
```

`LiquidMonitorLogger` převezme Tracy logger a chyby (ERROR/EXCEPTION/CRITICAL…) jdou na `/log`. **Cronová extension `liquidMonitorConnector` se neregistruje** a žádná služba `Cron` nevzniká.

Když potřebuješ obojí (crony i chyby), zaregistruj `liquidMonitorConnector` **před** loggerem; logger pak reusuje jeho chybový kanál a vlastní `url`/`apiKey` na `liquidMonitorLogger` vynech (per-channel routing crony vs. chyby řeš bloky `cron:`/`log:` na `liquidMonitorConnector`). Vyžaduje konektor 2.6+.

Log viewer
----------

[](#log-viewer)

Connector umí vystavit identické API jako `liquiddesign/nette-log-viewer` — read-only přístup k Tracy logům (`Debugger::$logDirectory`) přes JSON endpointy pod `//api/` (`list`, `stat`, `view`, `search`, `download`). Slouží monitoru/orchestrátoru pro čtení logů aplikace.

Registrace v host aplikaci:

```
extensions:
    liquidMonitorLogViewer: LiquidMonitorConnector\Bridges\LiquidMonitorLogViewerDI

# volitelné (výchozí hodnoty níže):
liquidMonitorLogViewer:
    urlPrefix: log-viewer
    presenter: LogViewer:LogViewer
    apiPresenter: LogViewer:LogViewerApi
    registerRoutes: true            # false = routy si spravuje host sám
    registerPresenterMapping: true  # false = host má vlastní presenter mapping
```

**Přístup je gatovaný přes Tracy debug mode** (`Debugger::isEnabled()`) ve startupu presenterů — stejně jako v samotném balíčku. Žádná další autentizace se nepřidává; produkční přístup monitoru je tedy nutné řešit přes Tracy debug allowlist (IP), případně vlastními subclassy presenterů v aplikaci.

DB query proxy
--------------

[](#db-query-proxy)

Connector umí vystavit read-only JSON API pro SQL dotazy proti databázi host aplikace. Monitor (ne agent) posílá `sql` + `connection` credentials v HTTP body; connector se připojí přes PDO, vynutí SELECT-only guardy, LIMIT wrap a statement timeout a vrátí flat JSON `{columns, rows, row_count, limit, truncated}`.

Registrace v host aplikaci:

```
extensions:
    liquidMonitorDbQuery: LiquidMonitorConnector\Bridges\LiquidMonitorDbQueryDI
```

Tím se route `db-query/api/query`, presenter mapping i config service zaregistrují automaticky — žádný vlastní presenter ani záznam v `pages.neon` není potřeba. Volitelná konfigurace (vše má rozumný default):

```
liquidMonitorDbQuery:
    urlPrefix: db-query
    apiPresenter: DbQuery:DbQueryApi
    registerRoutes: true
    registerPresenterMapping: true
    apiToken: '…'   # volitelné — když je nastaveno, navíc vyžaduje X-Api-Key header
```

**Endpoint:** `POST /{urlPrefix}/api/query`

**Request body:**

```
{
  "sql": "SELECT 1 AS connected",
  "connection": {
    "driver": "mariadb",
    "host": "127.0.0.1",
    "port": 3306,
    "database": "my_app",
    "username": "readonly_user",
    "password": "…"
  },
  "row_limit": 100,
  "statement_timeout_seconds": 5
}
```

**Bezpečnostní model:**

1. **Trusted IP / Tracy debug mode** — presenter servíruje jen v debug módu (`Debugger::$productionMode === false`), což je per-IP gate řízený `Configurator::setDebugMode` z whitelistu `access.debug` v host NEON (stejný mechanismus jako log-viewer). Mimo trusted IP presenter vrací `403`; gate je fail-closed (i nerozhodnutý `Detect` stav odmítne). Na produkci přidej IP monitoru do `access.debug`. **⚠️ Musí to být `access.debug`, NE `access.trusted`** — endpoint čte výhradně `access.debug` (Tracy debug mode); `access.trusted` (pro cron/jiný přístup) se pro DB query proxy **nevyhodnocuje**, takže IP jen v `access.trusted` → `403 Access denied`. **Pozn.:** nepoužívej `Debugger::isEnabled()` — to jen hlásí, že Tracy byla aktivovaná, a zůstává `true` i v produkci, takže nikoho neodřízne.
2. **Credentials v HTTP body** — connector se k DB připojí jen s `connection` objektem z requestu (posílá monitor). Bez správných údajů SELECT neproběhne, takže **samostatný token na DB není potřeba** — stačí trusted IP.
3. **Volitelný `apiToken`** — pokud je nastaven v NEON, navíc vyžaduje shodný `X-Api-Key` header (`hash_equals`). Defaultně vypnutý.

**Odpovědi:** úspěch `200` s flat JSON (bez vnořeného `data`); chyby `{ "error": "…", "code": 400|403|422|500 }`.

Orchestrator worker setup
-------------------------

[](#orchestrator-worker-setup)

### 1. Projekt na monitoru

[](#1-projekt-na-monitoru)

```
php artisan triage:provision-project  --json --repo-path=/opt/autonomy/my-app
```

Vytvoří `triage_api_key`, zapne `orchestrator_enabled` a založí git context source pro daný repo path.

### 2. Host (z kořene repa)

[](#2-host-z-kořene-repa)

```
/path/to/liquid-monitor-connector/bin/orchestrator-init
```

Vypíše `.env` do `/.orchestrator/.env`. Potřeba jsou jen dvě hodnoty:

```
ORCHESTRATOR_MONITOR_URL=https://monitor.lqd.cz
ORCHESTRATOR_API_KEY=trk_…
```

Kapacita, `claude_binary` a turn timeout přicházejí z monitoru (`orchestrator_settings`); odpovídající env proměnné jsou jen volitelný debug override. Alias env vars: `TRIAGE_MONITOR_URL`, `TRIAGE_API_KEY`, …

### 3. Cron

[](#3-cron)

```
* * * * * /path/to/liquid-monitor-connector/bin/orchestrator-run --env-file=/opt/autonomy/my-app/.orchestrator/.env >> /var/log/orchestrator-run.log 2>&1
```

### Pre-flight

[](#pre-flight)

- `git`, `tmux`, `claude` v PATH (kontroluje i `orchestrator-init`)
- `orchestrator_repo_path` na projektu ukazuje na existující clone
- Repo-mode (default): čistý pracovní strom (modifikované tracked soubory blokují běh; untracked se ignorují)

Development
-----------

[](#development)

```
composer install
composer check-code
```

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance98

Actively maintained with recent releases

Popularity22

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 78.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~12 days

Recently: every ~0 days

Total

80

Last Release

7d ago

Major Versions

v0.1 → 1.0.02024-03-01

1.0.54 → 2.x-dev2025-07-05

v1.0.66 → v2.0.12026-06-04

1.x-dev → v2.6.12026-06-26

PHP version history (3 changes)v0.1PHP &gt;=8.0

1.0.0PHP &gt;=8.2

1.0.36PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c2a45fb465d05cafa46a49d77995ae65b2d7eef3c9c94f91367d56442173236a?d=identicon)[info@lqd.cz](/maintainers/info@lqd.cz)

---

Top Contributors

[![petr6](https://avatars.githubusercontent.com/u/73128826?v=4)](https://github.com/petr6 "petr6 (152 commits)")[![MasterPK](https://avatars.githubusercontent.com/u/16056535?v=4)](https://github.com/MasterPK "MasterPK (34 commits)")[![TomasPasicnyk](https://avatars.githubusercontent.com/u/6038651?v=4)](https://github.com/TomasPasicnyk "TomasPasicnyk (8 commits)")

### Embed Badge

![Health badge](/badges/liquiddesign-liquid-monitor-connector/health.svg)

```
[![Health](https://phpackages.com/badges/liquiddesign-liquid-monitor-connector/health.svg)](https://phpackages.com/packages/liquiddesign-liquid-monitor-connector)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.1k](/packages/laravel-framework)[oro/platform

Business Application Platform (BAP)

645143.5k115](/packages/oro-platform)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M574](/packages/shopware-core)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
