Poltura CLI
Telepítsd a poltura parancssori eszközt, jelentkezz be, és használd a poltura app és poltura check parancsokat; a theme, store, MCP és token parancsoknak saját oldaluk van.
Ezen az oldalon
A @poltura/cli a poltura binárist telepíti: egyetlen eszköz az appokhoz, témákhoz, egy bolt adataihoz és az AI-eszközökhöz. Még nincs npm-en
$ npm install -g @poltura/cli
Node.js 22 vagy újabb verzió szükséges hozzá, telemetriát nem küld, és kizárólag a megadott Poltura API endpointot hívja. A poltura --help, a poltura <topic> --help és a poltura --version a CLI többi részének betöltése nélkül, egy beépített táblázatból válaszol, így azonnal lefut.
| Téma vagy parancs | Cél | Oldal |
|---|---|---|
poltura app | Appok létrehozása, buildelése, validálása és közzététele. | Ez az oldal |
poltura check | A felülvizsgálat eredménye egy apphoz vagy témához, még a közzététel előtt. | Ellenőrzés a közzététel előtt |
poltura theme | Témák indítása, ellenőrzése, szinkronizálása, előnézete és közzététele. | Témaparancsok |
poltura store | Rekordok olvasása, műveletek futtatása és analitikai kérdések feltevése egy boltban. | Boltparancsok |
poltura mcp connect | A Poltura MCP-szerver hozzáadása a Claude, Cursor, VS Code vagy Codex eszközökhöz. | Boltparancsok |
poltura token | API tokenek létrehozása, megújítása és visszavonása. | API tokenek |
poltura login, logout, whoami | Be- és kijelentkezés, valamint a saját azonosítód megtekintése. | Bejelentkezés vagy token használata |
poltura completion zsh|bash|fish | A parancssori kiegészítő szkript kiírása; a --help mutatja meg, hova kell helyezni. |
Minden parancs fogadja a -q, --quiet (csak eredmények és hibák kiírása), a --no-color és a -h, --help kapcsolókat. A NO_COLOR, FORCE_COLOR, CI változókat és a nem terminál jellegű kimenetet is figyelembe veszi. Hiba esetén kiírja a probléma okát, egy fix: vagy tipp sort, valamint egy linket az azt bemutató dokumentációs oldalra.
Bejelentkezés vagy token használata
Hogy melyik hitelesítő adatra van szükség, attól függ, mihez nyúl a parancs:
| Parancsok | Hitelesítő adat |
|---|---|
poltura store, poltura theme (az init, check, package kivételével mindegyik), poltura whoami | Először a --token, aztán a POLTURA_TOKEN (egy API token), végül a poltura login bejelentkezésed. |
poltura app publish | Egy fejlesztői token: --token vagy POLTURA_APP_TOKEN. Egy pltd_ token a fejlesztői szervezeted tulajdonában (CI-hez), vagy egy pltu_ személyes token. Ez kizárólag az adott szervezet appjaihoz tesz közzé release-eket. |
poltura token | A Poltura ID munkameneted: --access-token és --id-token (POLTURA_ACCESS_TOKEN, POLTURA_ID_TOKEN). Lásd: API tokenek. |
A CLI még elküldés előtt ellenőrzi az API token checksumját, így a csonkán beillesztett token azonnal elbukik. Szervezeti tokent (plto_) nem fogad el közzétételhez, mivel azzal nem lehet közzétenni.
poltura login
poltura whoami
poltura logoutA poltura login megnyitja a Poltura ID-t a böngésződben (a --no-browser a címet írja ki helyette SSH-hoz és egyéb böngésző nélküli gépekhez), és a Poltura saját CLI-klienseként jelentkezik be OAuth és PKCE használatával, a géped egyik loopback címére érkező válasszal. Alapértelmezésben az összes olvasási jogosultságot kéri, kivéve, ha a --permissions a,b kevesebbet ad meg; a jóváhagyandó jogosultságok körét a jóváhagyási oldalon szűkítheted vagy bővítheted. A --timeout <seconds> (10-től 3600-ig, alapértelmezés: 300) határozza meg, meddig vár a CLI. A munkamenet a ~/.config/poltura/credentials.json fájlban tárolódik (0600-as jogosultsággal; a POLTURA_CONFIG_DIR áthelyezi), és még a lejárata előtt megújul. A poltura whoami megmutatja, ki vagy, mely boltokat éred el, és milyen jogosultságaid vannak ott; a poltura logout visszavonja a munkamenetet és törli az adatokat.
A bejelentkezés DPoP (RFC 9449) révén ehhez a géphez kötődik. A poltura login létrehoz egy P-256 kulcspárt, és a privát kulcsot egy saját fájlban tárolja a hitelesítő adatok mellett: dpop/<thumbprint>.pem (0600-as jogosultság). Minden tokenváltás, megújítás és API-hívás az ezzel a kulccsal aláírt igazolást hordozza, az API-hívások pedig a tokent Authorization: DPoP <token> formában küldik el. A gépről kulcs nélkül átmásolt bejelentkezési tokent a rendszer elutasítja invalid_dpop_proof hibával, és ugyanez történik a másolt frissítési tokennel is: a Poltura ID ellenőrzi a kulcsot, mielőtt bármit megújítana. Ha a kulcsfájl hiányzik, a CLI megkér, hogy futtasd újra a poltura login parancsot. Ha az órád siet vagy késik, a szerver egy nonce értékkel válaszol, és a CLI újra elküldi a kérést azzal együtt. A Node-ban nincs olyan nem exportálható kulcstár, amelyet natív modul nélkül el lehetne érni, ezért a kulcsfájlt kezeld ugyanolyan körültekintéssel, mint a hitelesítő adatokat. Az API tokenek (POLTURA_TOKEN) nincsenek kulcshoz kötve. Kezeld őket titkos adatként.
Ha az API tanúsítványát egy olyan hitelesítésszolgáltató írta alá, amelyben a rendszered megbízik, de a Node nem (például egy vállalati proxy vagy a helyi fejlesztői CA), a CLI is megbízik benne. Az első kérés előtt hozzáadja a rendszer megbízható gyökértanúsítványait a Node sajátjaihoz. Ha egy kérésre nem érkezik válasz, a hibaüzenet elmagyarázza az okát: nem megbízható tanúsítvány, nem feloldható név, vagy elutasított, illetve megszakadt kapcsolat.
| Beállítás | Kapcsoló | Változó | Alapértelmezés |
|---|---|---|---|
| API-cím | --api <url> | POLTURA_API | https://api.poltura.com, vagy a legutóbbi bejelentkezésed címe, ha nincs token megadva |
| API token | --token <token> | POLTURA_TOKEN | nincs |
| Bolt | --store <id> | POLTURA_STORE | Az egyetlen bolt, amelyet a hitelesítő adat elér; kötelező, ha többet is elér |
| Fejlesztői token (közzététel) | --token <token> | POLTURA_APP_TOKEN | nincs |
Kilépési kódok és újrapróbálkozások
| Kód | Jelentés |
|---|---|
| 0 | Kész. |
| 1 | A parancs sikertelen volt, vagy az ellenőrzés hibákat talált. |
| 2 | Helytelen használat, például hiányzó kapcsoló. |
| 3 | Egy művelet emberi jóváhagyásra vár. A --wait a store run, theme publish és theme rollback parancsoknál megvárja a döntést. |
A hitelesítő adat pontkeretének kimerülése miatt elutasított kérés sosem éri el a boltot, így a poltura theme parancsok addig várnak, ameddig az elutasítás jelzi (alkalmanként legfeljebb 30 másodpercet), és legfeljebb 8 alkalommal újra elküldik a kérést, mielőtt feladnák. A poltura store parancsok jelentik az elutasítást; a várakozási idő után futtasd őket újra. Lásd: rate limitek.
poltura app create
Scaffold a new app project.
USAGE
$ poltura app create [FLAGS] <dir>
ARGUMENTS
dir Directory to create the project in (must be empty).
FLAGS
--template <template> Project template (choices: "hosted", "native", default:
"native").
-h, --help Show help.A --template native csak UI worker fájlokat hoz létre. A --template hosted emellett létrehozza a src/server.ts fájlt is: egy /connect?installation=<installation id> route-ot, amely elindítja az OAuth folyamatot az adott telepítéshez, az /oauth/callback route-ot, amely befejezi azt és meghívja az App API-t, valamint egy termék webhookot. A README felsorolja a szerver által olvasott környezeti változókat. A létrehozott poltura.app.json nem tartalmaz appId-t, így a poltura app publish parancshoz szükséges a --app kapcsoló, amíg nem adsz hozzá egyet.
created hosted app in /home/dev/my-apppoltura app
Create, build, validate and publish a Poltura app.
USAGE
$ poltura app [FLAGS] COMMAND
COMMANDS
create <dir> Scaffold a new app project.
build Bundle workers and styles and write the release manifest.
validate Check the app config.
dev Rebuild on every change to the app sources.
elements List the storefront elements the app defines.
publish Build the app and upload it as a release for review.
help [command] Show help for a command.
FLAGS
-h, --help Show help.
EXAMPLES
$ poltura app create my-app Scaffold a native app.
$ poltura app dev Rebuild on every save.
$ poltura app publish Upload a release for review.
Build the app and upload it as a release for review.
USAGE
$ poltura app publish [FLAGS]
FLAGS
--api <url> Gateway origin (POLTURA_API).
--token <token> Developer token, pltd_ or pltu_ (POLTURA_APP_TOKEN),
from Developer apps in admin.
--app <appId> App id; defaults to appId in poltura.app.json.
--admin-origin <url> Admin origin, to print the review link.
--channel <channel> Release channel (default: "production").
-h, --help Show help.A poltura app build minden workers[].entry elemet IIFE JavaScriptté bundle-öl, a workers[].stylesheet fájlokat compile-olja Tailwinddel (minden stylesheet legfeljebb 262144 bájt lehet), ellenőrző kódokat (digest) ír, és az eredményt app manifestként értelmezi. A poltura app validate egy ideiglenes könyvtárba buildel, majd elemzi a manifest.json fájlt és a JSON extensions[] elemeket. A poltura app dev a src/ és a poltura.app.json változásakor újrabuildel, és kiírja: watch <digest>, amikor a manifest digestje megváltozik. A build és a dev a dist könyvtárba ír, hacsak nem adod meg a --out <dir> kapcsolót.
Egy kezelőfelület nélküli app, vagyis egy olyan integráció, amely csak az App API-t hívja és webhookokat fogad, nem deklarál workereket: UI runtime nélkül buildelhető és tehető közzé release-ként.
A workerek buildeléséhez a react, react-dom, tailwindcss és @poltura/app-ui csomagoknak elérhetőnek kell lenniük a projektben; először telepítsd a dependencyket. A build leáll a Install react in this project to build workers. üzenettel, ha ezek hiányoznak.
$ npm install
Buildelés és validálás
A teljes példa, a Poltura Labs által készített Recommendations (lásd: Példák) felépítése a következő:
packages/app-sdk/examples/complete-app/
poltura.app.json
package.json
src/server.ts
src/elements.ts
src/workers/admin-page.tsx
src/workers/admin-product.tsx
src/workers/storefront-product.tsx
src/workers/storefront-footer.tsx
src/workers/app-page.tsx
src/styles.css
src/locales/en.json
src/locales/hu.json
README.mdA szkriptjei ugyanazokat a lépéseket futtatják, amelyeket te is futtatsz a saját appodban:
pnpm test:unit
pnpm build
pnpm validatebuilt recommendations@1.0.0 sha256-qwcsxz+/Sn1wjxUbCKy7Ah/ROvTpZrZMf/8OTBIGg9Q= 5 workersbuilt recommendations@1.0.0 sha256-qwcsxz+/Sn1wjxUbCKy7Ah/ROvTpZrZMf/8OTBIGg9Q= 5 workers
ok recommendations@1.0.0
manifest.json 7765 bytesKözzététel
A poltura app publish buildeli az appot, és feltölti release-ként felülvizsgálatra. A release-t elküldi a --api kapcsolóban (vagy a POLTURA_API változóban) megadott Poltura API-nak, és kiírja: published <releaseId>. A --admin-origin kapcsoló megadásakor a felülvizsgálati linket is kiírja.
poltura app publish --api "$POLTURA_API" --app <app id> --token "$POLTURA_APP_TOKEN"A --api a Poltura API alapcíme. Alapértelmezése a https://api.poltura.com; csak akkor add meg, vagy állítsd be a POLTURA_API változót, ha másik környezetet használsz. A --app az app azonosítója a Fejlesztői alkalmazások felületről. Alternatívaként a poltura.app.json fájl appId mezőjéből is származhat, de a sablon nem hoz létre ilyet. Add meg a --channel kapcsolót, ha a production csatornától eltérő release-csatornát szeretnél választani.
A development csatornán lévő release-eket a kereskedők nem tudják telepíteni (release_not_production). Felülvizsgálat és telepítés: Közzététel, felülvizsgálat, telepítés.
Ellenőrzés a közzététel előtt
A poltura check [dir] az egyetlen parancs, amelyet közzététel előtt futtatnod kell. Néhány másodperc alatt, hálózati kapcsolat nélkül adja meg ugyanazt az eredményt, mint a Poltura felülvizsgálata. Megállapítja, hogy a könyvtár app-e (tartalmazza a poltura.app.json fájlt) vagy téma (tartalmazza a theme.json fájlt), és lefuttatja a releváns ellenőrzéseket:
| Ellenőrzés | Cél | Mit vizsgál |
|---|---|---|
manifest | appok | A poltura.app.json fájlt a manifestsémával szemben, minden probléma JSON pointerével együtt. |
permissions | appok | Minden jogosultság-azonosító létezik, és az app kérheti is. Az elgépelt azonosítók mellé felajánlja a legközelebbi valós találatokat. Az érzékeny jogosultság csak figyelmeztetést ad: az ilyen release-hez piactéri felülvizsgálat szükséges. |
build | appok | Ugyanaz a buildelés és validálás, mint a poltura app validate esetén, egy ideiglenes könyvtárba. Kihagyja, amíg a manifestben hibák vannak. |
agent | src/agent mappával rendelkező appok | Az agent-belépési pontok manifestté állnak össze: kulcsok elnevezése, legfeljebb 20 eszköz toolsetenként, létező jogosultságok, destruktív műveletek confirm: 'always' beállítással, valamint a bemenetüknek megfelelő példák. |
theme | témák | Ugyanaz a témaellenőrzés, mint a poltura theme check esetén: layout, szekciók, beállítások. A típusokat akkor ellenőrzi, ha meg van adva egy típuscsomag (--types vagy POLTURA_THEME_TYPES). |
lint | mindkettő | A Poltura kódszabályai, amelyeket az Oxlint futtat a src könyvtáron, külön beállítás nélkül. |
A kódszabályok biztosítják, hogy a kívülről érkező adatok elemezve és típusozva maradjanak: nincsenek unknown paraméterek vagy visszatérési típusok, nincsenek unknown, any vagy object szótárak, minden típuskényszerítésen szerepel egy // SAFETY: megjegyzés, és nincs runtime typeof ellenőrzés elemezetlen értékeken. Elemezd az értéket egy sémával ott, ahol belép a kódodba, és a típusos eredményt add tovább.
| Opció | Jelentés |
|---|---|
--json | A jelentés kiírása egyetlen JSON-sorként, AI-ügynökök és CI számára. |
--fix | A kódszabályok biztonságos automatikus javításainak alkalmazása (például var cseréje const-ra). Semmi mást nem ír át. |
--strict | Figyelmeztetések esetén is 1-es kóddal lép ki. |
--kind app|theme | Az automatikus felismerés kihagyása. |
--types <packRoot> | Tématípus-csomag, ahogyan a poltura theme check parancsnál is. |
Az ember által olvasható kimenet fájlonként van csoportosítva; minden találat tartalmazza az azt kiváltó szabályt és egy fix: sort, amely leírja, mit kell változtatni.
poltura.app.json
✖ /permissions/required/2/id "orders.reed" is not a permission id. [permissions/unknown]
fix: Did you mean "orders.read" or "orders.refund"? The full list is at https://developers.poltura.com/apps/permissions.
src/orders.ts
✖ 2:7 A `typeof` check narrows a representation without establishing its contract. Parse input at its I/O boundary, then branch on the domain value. [anti-slop/no-runtime-typeof]
fix: Parse the value with a schema at the boundary, then branch on the parsed value.
skipped build: fix the manifest first
✖ failed: 2 errors, 0 warnings (app, 1.4s)A --json kapcsolóval a jelentés a következő formátumú:
{
"v": 1,
"kind": "app",
"root": "/work/my-app",
"ok": false,
"totals": { "error": 2, "warning": 0, "info": 0 },
"findings": [
{
"severity": "error",
"rule": "permissions/unknown",
"message": "\"orders.reed\" is not a permission id.",
"hint": "Did you mean \"orders.read\" or \"orders.refund\"? ...",
"file": "poltura.app.json",
"pointer": "/permissions/required/2/id"
}
],
"steps": [{ "id": "manifest", "ran": true }, { "id": "agent", "ran": false, "note": "the app declares no src/agent entry" }],
"fixed": 0,
"durationMs": 1432
}A severity értéke error, warning vagy info. Egy találat tartalmazza a file mezőt (a projekthez viszonyított relatív útvonallal), valamint ahol elérhető, a line, column és pointer adatokat. A rule stabil, így lehet illeszteni rá: manifest/*, permissions/*, build/failed, agent/*, theme/*, vagy egy kódszabály neve, mint például az anti-slop/no-runtime-typeof. Kilépési kódok: 0, ha nincsenek hibák (és --strict esetén figyelmeztetések sincsenek), 1, ha hibát talált, 2, ha a könyvtár nem app és nem is téma.
A poltura check csak a src/agent belépési pont beolvasásához futtatja az app saját kódját; hálózati hívást nem indít. Futtasd a CI-ben a poltura check --json --strict paranccsal, valamint minden poltura app publish előtt.
Témák
A témákkal kapcsolatos parancsoknak – beleértve a poltura theme check parancsot is – saját oldaluk van: Témaparancsok.
Következő lépések
- Átadás a kereskedőknek: mi történik a
publishután. - Témaparancsok, Boltparancsok és API tokenek.
- Jogosultságok és témakörök: a generált referencia-táblázatok.