--- title: Operaterski CLI (`colibri`) description: "Binarna datoteka `colibri` je operaterski vmesnik ukazne vrstice do procesa v ozadju — tanek tipiziran odjemalec Unix vtičnice." --- ← [kazalo](./index.md) Binarna datoteka `colibri` je operaterski vmesnik ukazne vrstice do procesa v ozadju. Je tanek odjemalec — pošilja ukaze JSON po vtičnici Unix, razčlenjuje odgovore in jih izpisuje. Vsak podukaz CLI se preslika v en ukaz procesa v ozadju. Vmesnik CLI dodaja priročnost (barvni izpis, privzetki, oblikovalci), ne poslovne logike. → `crates/colibri-client/src/bin/colibri.rs` ## Odločitve ### Ena binarna datoteka, ena vtičnica Obstaja ena binarna datoteka `colibri`, ki se poveže na eno vtičnico (`/var/run/colibri/colibri.sock` ali `COLIBRI_SOCKET`). Ni podukazov za izbiro procesa v ozadju — večgostiteljske operacije gredo skozi most krmilne ravnine. Operater izrecno usmeri na drug gostitelj (`nc 9190`), ne da bi CLI podpiral več končnih točk. **Zakaj ne več profilov procesa v ozadju**: en proces v ozadju na gostitelja je zadosten. Več končnih točk bi v CLI vneslo stanje (`colibri --host osa status`), ki ga most že rešuje na omrežni plasti. ### CLI je generičen odjemalec JSON-RPC Vsak podukaz zgradi objekt `ColibriCommand`, pokliče `client.request(command).await` in izpiše rezultat. Odjemalec ne ve ničesar o pomenu kateregakoli ukaza — samo serializira in razčlenjuje. Oblikovalci izhodov (`print_json`, `print_table`, `print_key_value`) so čiste funkcije nad `serde_json::Value`. Če proces v ozadju doda novo polje, se samodejno prikaže v izhodu JSON brez spremembe v CLI. ### En ukaz na zagon, ne interaktivno Vsak zagon `colibri` izvede natanko en ukaz in konča. Brez lupine REPL, brez več ukazov v eni seji. To ohranja CLI brez stanja in varnega za skriptanje: `colibri status | jq '.data.agents'` je enako zanesljiv v cronu kot v terminalu. → `crates/colibri-client/src/bin/colibri.rs` (`main`) ### Podukazi, specifični za tablo opravil, sledijo istemu vzorcu Ukazi za opravila (`create-task`, `intake-task`, `claim-task`, `transition-task`) sprejemajo argumente CLI, ki se preslikajo v polja ukaza JSON. Izhod je bodisi celoten objekt opravila (za `create-task`, `intake-task`) bodisi potrditev (`claim-task`, `transition-task`). Noben podukaz ne zahteva več kot ~3 argumentov — opravilna tabla je namenjena dodeljevanju s strani agenta, ne ročnemu upravljanju. → `crates/colibri-client/src/bin/colibri.rs` ## Glej tudi - [task-board](./task-board.md) — ukazi, ki jih CLI zrcali - [deployment](./deployment.md) — kako je nameščena binarna datoteka procesa v ozadju