> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evox.wraithesports.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Developer CLI

> Plugin projesi oluşturun, doğrulayın, bundle üretin, önizleyin ve paketleyin.

`@evoxapp/plugin-cli` paketinin binary adı `evox-plugin`dır.

## Kurulum

Node.js 20+ gerekir. Kurulum yapmadan `npx` ile kullanabilirsiniz:

```bash theme={}
npx @evoxapp/plugin-cli init my-plugin
```

veya global kurulum:

```bash theme={}
npm install -g @evoxapp/plugin-cli
evox-plugin init my-plugin
```

## Komutlar

```bash theme={}
# init: proje iskeleti (iki hedef)
evox-plugin init ./my-plugin --name "Plugin Adı"                      # sandbox-js (public T2 hedefi, varsayılan) — evox-plugin.json
evox-plugin init ./my-plugin --runtime trusted-node --name "Plugin"   # T1 yerel gelistirme — manifest.json + runtime.mjs

# Asagidaki pipeline komutlari SANDBOX-JS (T2) projeleri icindir; evox-plugin.json gerektirir.
# T1 (trusted-node) projesi bunlara IHTIYAC DUYMAZ, dogrudan evoX'e yuklenir (asagidaki Note'a bakin).
evox-plugin validate ./my-plugin
evox-plugin build ./my-plugin
evox-plugin run ./my-plugin
evox-plugin sandbox-test ./my-plugin
evox-plugin pack ./my-plugin
evox-plugin publish-check ./my-plugin
```

`--plugin-id <uuid>` opsiyoneldir; verilmezse otomatik üretilir ve çıktıda gösterilir.

<Note>
  **T1 (trusted-node) mı, T2 (sandbox-js) mi?** İki init hedefinin akışı farklıdır:

  * **T1 · `--runtime trusted-node`** → `manifest.json` + `runtime.mjs` üretir. **Doğrudan** evoX **Eklentiler → Geliştirici** penceresinden yüklenir; `validate`/`build`/`pack` **gerekmez**. Bu projede `validate` çalıştırırsanız `evox-plugin.json` bulunamadığı için hata alırsınız — bu beklenendir. Adımlar: <a href="/sdk/quickstart">Hızlı başlangıç</a>.
  * **T2 · varsayılan (`sandbox-js`)** → `evox-plugin.json` config'i üretir. `validate` → `sandbox-test` → `build` → `pack` → `publish-check` pipeline'ı bu projeler içindir (public upload açılınca yayın hedefi).
</Note>

| Komut           | Hedef | Sonuç                                                                                                                   |
| --------------- | ----- | ----------------------------------------------------------------------------------------------------------------------- |
| `init`          | —     | Başlangıç projesi oluşturur (varsayılan `sandbox-js`/T2; `--runtime trusted-node` ile T1)                               |
| `validate`      | T2    | Manifest, path ve dependency inventory kontrolü yapar (`evox-plugin.json` gerektirir)                                   |
| `build`         | T2    | esbuild ile browser-compatible tek ESM bundle üretir                                                                    |
| `run`           | T2    | Host-validation preview çalıştırır                                                                                      |
| `sandbox-test`  | T2    | Sandbox uyum kontrolü: kaynakta Node/DOM/doğrudan ağ erişimini tarar, browser bundle'ı doğrular, ihlalde non-zero çıkar |
| `pack`          | T2    | `evox-archive-v1` policy ile `.evoxpack` oluşturur                                                                      |
| `publish-check` | T2    | Local parity kontrolü yapar                                                                                             |

> T1 (trusted-node) projesi bu pipeline komutlarını kullanmaz; kod değiştirdikçe **Geliştirici** penceresinden **yeniden yükle**yerek geliştirir.

<Warning>`run` sandbox değildir. Gerçek T2 sınırı host-owned Electron sandboxında doğrulanır.</Warning>

`sandbox-test` **statik** bir uyum kontrolüdür: `sandbox-js` kaynağınızı Node/DOM/doğrudan ağ (fetch/WebSocket/XHR) erişimine karşı tarar ve browser bundle'ını doğrular. Yayına göndermeden önce çalıştırın; herhangi bir ihlal fail-closed non-zero çıkış verir (CI/pre-submit için uygun). **Gerçek T2 güvenlik sınırı host-owned Electron Chromium Worker'dır**; `sandbox-test` onu tamamlar, yerine geçmez.

## `evox-plugin.json` (sandbox-js/T2 config)

sandbox-js projesinin kök config dosyası. `init` üretir; pipeline komutları (`validate`/`build`/`pack`/`publish-check`) bunu okur. (T1 trusted-node projesinde bu dosya **yoktur**; T1 doğrudan `manifest.json` + `runtime.mjs` ile çalışır.)

| Alan                                        | Açıklama                                                                                                                |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `schemaVersion`                             | Config şema sürümü (`1`)                                                                                                |
| `sourceEntry`                               | Plugin kaynak giriş dosyası (ör. `src/plugin.ts`); `build` bunu tek ESM bundle'a derler                                 |
| `package.name` / `package.description`      | Paket meta bilgisi                                                                                                      |
| `package.author.id` / `package.author.name` | Geliştirici kimliği (yerelde `local-developer` / `Yerel Geliştirici`)                                                   |
| `plugin`                                    | Host manifest'i (kimlik, runtime `sandbox-js`, izinler, aksiyonlar) — alanlar için <a href="/sdk/manifest">Manifest</a> |

`dependencies.json` ayrı tutulur ve `validate`/`pack` tarafından envanterlenir.

`publish-check` moderation, production scanner, signing veya revocation yerine geçmez. Public executable upload hazır olmadığı sürece `PLUGIN_UPLOAD_NOT_READY` korunur.
