kastell 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +56 -20
  2. package/README.tr.md +56 -20
  3. package/SECURITY.md +10 -1
  4. package/dist/adapters/coolify.d.ts +4 -1
  5. package/dist/adapters/coolify.d.ts.map +1 -1
  6. package/dist/adapters/coolify.js +11 -1
  7. package/dist/adapters/coolify.js.map +1 -1
  8. package/dist/adapters/dokploy.d.ts +4 -1
  9. package/dist/adapters/dokploy.d.ts.map +1 -1
  10. package/dist/adapters/dokploy.js +11 -1
  11. package/dist/adapters/dokploy.js.map +1 -1
  12. package/dist/adapters/interface.d.ts +21 -1
  13. package/dist/adapters/interface.d.ts.map +1 -1
  14. package/dist/adapters/shared.d.ts +7 -0
  15. package/dist/adapters/shared.d.ts.map +1 -1
  16. package/dist/adapters/shared.js +8 -1
  17. package/dist/adapters/shared.js.map +1 -1
  18. package/dist/commands/backup.d.ts.map +1 -1
  19. package/dist/commands/backup.js +41 -96
  20. package/dist/commands/backup.js.map +1 -1
  21. package/dist/commands/firewall.d.ts.map +1 -1
  22. package/dist/commands/firewall.js +6 -5
  23. package/dist/commands/firewall.js.map +1 -1
  24. package/dist/commands/logs.d.ts.map +1 -1
  25. package/dist/commands/logs.js +11 -15
  26. package/dist/commands/logs.js.map +1 -1
  27. package/dist/commands/maintain.d.ts.map +1 -1
  28. package/dist/commands/maintain.js +2 -2
  29. package/dist/commands/maintain.js.map +1 -1
  30. package/dist/commands/restore.js +7 -7
  31. package/dist/commands/restore.js.map +1 -1
  32. package/dist/commands/status.d.ts.map +1 -1
  33. package/dist/commands/status.js +20 -32
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/commands/update.d.ts.map +1 -1
  36. package/dist/commands/update.js +26 -64
  37. package/dist/commands/update.js.map +1 -1
  38. package/dist/core/audit/checks/docker.d.ts.map +1 -1
  39. package/dist/core/audit/checks/docker.js +3 -4
  40. package/dist/core/audit/checks/docker.js.map +1 -1
  41. package/dist/core/backup.d.ts +7 -1
  42. package/dist/core/backup.d.ts.map +1 -1
  43. package/dist/core/backup.js +21 -2
  44. package/dist/core/backup.js.map +1 -1
  45. package/dist/core/lock.js +1 -1
  46. package/dist/core/lock.js.map +1 -1
  47. package/dist/core/maintain.d.ts.map +1 -1
  48. package/dist/core/maintain.js +2 -3
  49. package/dist/core/maintain.js.map +1 -1
  50. package/dist/core/provision.d.ts.map +1 -1
  51. package/dist/core/provision.js +9 -4
  52. package/dist/core/provision.js.map +1 -1
  53. package/dist/core/status.d.ts +9 -0
  54. package/dist/core/status.d.ts.map +1 -1
  55. package/dist/core/status.js +44 -1
  56. package/dist/core/status.js.map +1 -1
  57. package/dist/core/update.d.ts +10 -0
  58. package/dist/core/update.d.ts.map +1 -0
  59. package/dist/core/update.js +45 -0
  60. package/dist/core/update.js.map +1 -0
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +29 -5
  63. package/dist/mcp/server.js.map +1 -1
  64. package/dist/mcp/tools/serverAudit.d.ts +2 -1
  65. package/dist/mcp/tools/serverAudit.d.ts.map +1 -1
  66. package/dist/mcp/tools/serverAudit.js +4 -2
  67. package/dist/mcp/tools/serverAudit.js.map +1 -1
  68. package/dist/mcp/tools/serverBackup.handlers.d.ts.map +1 -1
  69. package/dist/mcp/tools/serverBackup.handlers.js +2 -7
  70. package/dist/mcp/tools/serverBackup.handlers.js.map +1 -1
  71. package/dist/mcp/tools/serverInfo.d.ts.map +1 -1
  72. package/dist/mcp/tools/serverInfo.js +28 -10
  73. package/dist/mcp/tools/serverInfo.js.map +1 -1
  74. package/dist/mcp/tools/serverLock.d.ts +2 -1
  75. package/dist/mcp/tools/serverLock.d.ts.map +1 -1
  76. package/dist/mcp/tools/serverLock.js +4 -2
  77. package/dist/mcp/tools/serverLock.js.map +1 -1
  78. package/dist/mcp/tools/serverLogs.d.ts.map +1 -1
  79. package/dist/mcp/tools/serverLogs.js +11 -4
  80. package/dist/mcp/tools/serverLogs.js.map +1 -1
  81. package/dist/mcp/tools/serverMaintain.d.ts.map +1 -1
  82. package/dist/mcp/tools/serverMaintain.js +9 -6
  83. package/dist/mcp/tools/serverMaintain.js.map +1 -1
  84. package/dist/mcp/tools/serverProvision.d.ts +2 -1
  85. package/dist/mcp/tools/serverProvision.d.ts.map +1 -1
  86. package/dist/mcp/tools/serverProvision.js +4 -2
  87. package/dist/mcp/tools/serverProvision.js.map +1 -1
  88. package/dist/mcp/tools/serverSecure.d.ts +2 -1
  89. package/dist/mcp/tools/serverSecure.d.ts.map +1 -1
  90. package/dist/mcp/tools/serverSecure.js +3 -2
  91. package/dist/mcp/tools/serverSecure.js.map +1 -1
  92. package/dist/mcp/utils.d.ts +5 -0
  93. package/dist/mcp/utils.d.ts.map +1 -1
  94. package/dist/mcp/utils.js +7 -0
  95. package/dist/mcp/utils.js.map +1 -1
  96. package/dist/utils/ssh.d.ts +5 -0
  97. package/dist/utils/ssh.d.ts.map +1 -1
  98. package/dist/utils/ssh.js +21 -3
  99. package/dist/utils/ssh.js.map +1 -1
  100. package/package.json +3 -1
package/README.md CHANGED
@@ -45,7 +45,7 @@ Running `kastell` without any arguments launches an **interactive search menu**
45
45
  ██║ ██╗ ██║ ██║ ███████║ ██║ ███████╗███████╗███████╗
46
46
  ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝
47
47
 
48
- KASTELL v1.12.0 · Your infrastructure, fortified.
48
+ KASTELL v1.13.0 · Your infrastructure, fortified.
49
49
 
50
50
  $ kastell init --template production → deploy a new server
51
51
  $ kastell status --all → check all servers
@@ -152,18 +152,26 @@ kastell domain add my-server --domain example.com # Set domain + SSL
152
152
 
153
153
  ### Security Audit
154
154
  ```bash
155
- kastell audit my-server # Full security audit (9 categories, 46+ checks)
156
- kastell audit my-server --json # JSON output for automation
157
- kastell audit my-server --threshold 70 # Exit code 1 if score below threshold
158
- kastell audit my-server --fix # Interactive fix mode (prompts per severity)
159
- kastell audit my-server --fix --dry-run # Preview fixes without executing
160
- kastell audit my-server --watch # Re-audit every 5 min, show only changes
161
- kastell audit my-server --watch 60 # Custom interval (60 seconds)
162
- kastell audit --host root@1.2.3.4 # Audit unregistered server
163
- kastell audit my-server --badge # SVG badge output
164
- kastell audit my-server --report html # Full HTML report
165
- kastell audit my-server --score-only # Just the score (CI-friendly)
166
- kastell audit my-server --summary # Compact dashboard view
155
+ kastell audit my-server # Full security audit (27 categories, 413 checks)
156
+ kastell audit my-server --json # JSON output for automation
157
+ kastell audit my-server --threshold 70 # Exit code 1 if score below threshold
158
+ kastell audit my-server --fix # Interactive fix mode (prompts per severity)
159
+ kastell audit my-server --fix --dry-run # Preview fixes without executing
160
+ kastell audit my-server --watch # Re-audit every 5 min, show only changes
161
+ kastell audit my-server --watch 60 # Custom interval (60 seconds)
162
+ kastell audit --host root@1.2.3.4 # Audit unregistered server
163
+ kastell audit my-server --badge # SVG badge output
164
+ kastell audit my-server --report html # Full HTML report
165
+ kastell audit my-server --score-only # Just the score (CI-friendly)
166
+ kastell audit my-server --summary # Compact dashboard view
167
+ kastell audit my-server --explain # Explain failed checks with remediation guidance
168
+ kastell audit my-server --compliance cis # Filter by compliance framework (cis-level1, cis-level2, pci-dss, hipaa)
169
+ ```
170
+
171
+ ### Security Hardening
172
+ ```bash
173
+ kastell lock my-server # 19-step production hardening (SSH + UFW + sysctl + auditd + AIDE + Docker)
174
+ kastell lock my-server --dry-run # Preview hardening steps without applying
167
175
  ```
168
176
 
169
177
  ### Monitor & Debug
@@ -237,7 +245,7 @@ kastell init --template production --provider hetzner
237
245
 
238
246
  ## Security
239
247
 
240
- Kastell is built with security as a priority -- **3,333 tests** across 149 suites, including dedicated security test suites.
248
+ Kastell is built with security as a priority -- **4,178 tests** across 183 suites, including dedicated security test suites.
241
249
 
242
250
  - API tokens are never stored on disk -- prompted at runtime or via environment variables
243
251
  - SSH keys are auto-generated if needed (Ed25519)
@@ -249,6 +257,7 @@ Kastell is built with security as a priority -- **3,333 tests** across 149 suite
249
257
  - Import/export operations strip sensitive fields and enforce strict file permissions (`0o600`)
250
258
  - `--full-setup` enables UFW firewall and SSH hardening automatically
251
259
  - MCP: SAFE_MODE (default: on) blocks all destructive operations, Zod schema validation on all inputs, path traversal protection on backup restore
260
+ - Claude Code hooks: destroy-block prevents accidental `kastell destroy` without `--force`, pre-commit audit guard warns on score drops
252
261
 
253
262
  ## Installation
254
263
 
@@ -278,6 +287,8 @@ Use `kastell status my-server --autostart` to check platform status and auto-res
278
287
 
279
288
  See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing, and contribution guidelines.
280
289
 
290
+ Kastell uses **4,178 tests** across 183 suites. Run `npm test` before submitting PRs.
291
+
281
292
  ## MCP Server (AI Integration)
282
293
 
283
294
  Kastell includes a built-in [Model Context Protocol](https://modelcontextprotocol.io/) server for AI-powered server management. Works with Claude Code, Cursor, Windsurf, and other MCP-compatible clients.
@@ -303,22 +314,47 @@ Available tools:
303
314
 
304
315
  | Tool | Actions | Description |
305
316
  |------|---------|-------------|
306
- | `server_info` | list, status, health | Query server information, check cloud provider and platform status |
317
+ | `server_info` | list, status, health, sizes | Query server information, check cloud provider and platform status |
307
318
  | `server_logs` | logs, monitor | Fetch platform/Docker logs and system metrics via SSH |
308
319
  | `server_manage` | add, remove, destroy | Register, unregister, or destroy cloud servers |
309
320
  | `server_maintain` | update, restart, maintain | Update platform, restart servers, run full maintenance |
310
321
  | `server_secure` | secure, firewall, domain | SSH hardening, firewall rules, domain/SSL management (10 subcommands) |
311
322
  | `server_backup` | backup, snapshot | Backup/restore databases and create/manage VPS snapshots |
312
323
  | `server_provision` | create | Provision new servers on cloud providers |
313
- | `server_audit` | audit | Run security audit with summary/json/score output formats |
324
+ | `server_audit` | audit | 413-check security audit with compliance framework filtering; use `--explain` for remediation guidance |
314
325
  | `server_evidence` | collect | Collect forensic evidence package with checksums |
315
326
  | `server_guard` | start, stop, status | Manage autonomous security monitoring daemon |
316
327
  | `server_doctor` | diagnose | Proactive health analysis with remediation commands |
317
- | `server_lock` | harden | Harden server to production standard in one step |
328
+ | `server_lock` | harden | 19-step production hardening (SSH, UFW, sysctl, auditd, AIDE, Docker) |
318
329
  | `server_fleet` | overview | Fleet-wide health and security posture dashboard |
319
330
 
320
331
  > All destructive operations (destroy, restore, snapshot-delete, provision, restart, maintain, snapshot-create) require `SAFE_MODE=false` to execute.
321
332
 
333
+ ### Claude Code Plugin
334
+
335
+ Kastell is available as a [Claude Code plugin](kastell-plugin/) for the Anthropic marketplace. The plugin bundles:
336
+
337
+ - **4 skills**: kastell-ops (architecture reference), kastell-scaffold (component generation), kastell-careful (destructive op guard), kastell-research (codebase exploration)
338
+ - **2 agents**: kastell-auditor (parallel audit analyzer), kastell-fixer (worktree-isolated auto-fix)
339
+ - **5 hooks**: destroy-block, session-audit, session-log, pre-commit-audit-guard, stop-quality-check
340
+
341
+ Install via Claude Code plugin manager or use directly with `claude --plugin-dir kastell-plugin`.
342
+
343
+ ### MCP Platform Setup
344
+
345
+ | Platform | Config Location | Guide |
346
+ |----------|----------------|-------|
347
+ | Claude Code | `claude mcp add` or `.mcp.json` | [Setup Guide](docs/mcp-platforms/claude-code.md) |
348
+ | Claude Desktop | `claude_desktop_config.json` | [Setup Guide](docs/mcp-platforms/claude-desktop.md) |
349
+ | VS Code / Copilot | `.vscode/mcp.json` | [Setup Guide](docs/mcp-platforms/vscode.md) |
350
+ | Cursor | `.cursor/mcp.json` | [Setup Guide](docs/mcp-platforms/cursor.md) |
351
+
352
+ > More platforms (JetBrains, Windsurf, Gemini, and others) coming in v2.0.
353
+
354
+ ### AI Discoverability
355
+
356
+ Kastell provides [`llms.txt`](llms.txt) for AI crawlers and is listed in the [MCP Registry](https://registry.modelcontextprotocol.io/) as `io.github.kastelldev/kastell`.
357
+
322
358
  ## CI/CD Integration
323
359
 
324
360
  Use `kastell audit` in your CI pipeline to enforce security baselines:
@@ -347,9 +383,9 @@ The `--threshold` flag causes a non-zero exit code when the score falls below th
347
383
 
348
384
  ## What's Next
349
385
 
350
- - Audit Pro: 400+ security checks across 20+ categories
351
- - Plugin ecosystem for AI IDEs
352
- - Dashboard and managed service
386
+ - Test Excellence: Mutation testing, coverage gaps, integration tests (v1.14)
387
+ - Plugin ecosystem with marketplace distribution (v2.0)
388
+ - Dashboard and managed service (v3.0)
353
389
 
354
390
  ## Philosophy
355
391
 
package/README.tr.md CHANGED
@@ -45,7 +45,7 @@ npx kastell
45
45
  ██║ ██╗ ██║ ██║ ███████║ ██║ ███████╗███████╗███████╗
46
46
  ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝
47
47
 
48
- KASTELL v1.12.0 · Your infrastructure, fortified.
48
+ KASTELL v1.13.0 · Your infrastructure, fortified.
49
49
 
50
50
  $ kastell init --template production → deploy a new server
51
51
  $ kastell status --all → check all servers
@@ -152,18 +152,26 @@ kastell domain add sunucum --domain ornek.com # Domain + SSL ayarla
152
152
 
153
153
  ### Güvenlik Denetimi
154
154
  ```bash
155
- kastell audit sunucum # Tam güvenlik denetimi (9 kategori, 46+ kontrol)
156
- kastell audit sunucum --json # Otomasyon için JSON çıktısı
157
- kastell audit sunucum --threshold 70 # Skor eşiğin altındaysa exit code 1
158
- kastell audit sunucum --fix # İnteraktif düzeltme modu (önem derecesine göre)
159
- kastell audit sunucum --fix --dry-run # Düzeltmeleri çalıştırmadan önizle
160
- kastell audit sunucum --watch # 5 dk aralıkla tekrar denetle, sadece değişiklikleri göster
161
- kastell audit sunucum --watch 60 # Özel aralık (60 saniye)
162
- kastell audit --host root@1.2.3.4 # Kayıtlı olmayan sunucuyu denetle
163
- kastell audit sunucum --badge # SVG rozet çıktısı
164
- kastell audit sunucum --report html # Tam HTML raporu
165
- kastell audit sunucum --score-only # Sadece skor (CI uyumlu)
166
- kastell audit sunucum --summary # Kompakt özet görünümü
155
+ kastell audit sunucum # Tam güvenlik denetimi (27 kategori, 413 kontrol)
156
+ kastell audit sunucum --json # Otomasyon için JSON çıktısı
157
+ kastell audit sunucum --threshold 70 # Skor eşiğin altındaysa exit code 1
158
+ kastell audit sunucum --fix # İnteraktif düzeltme modu (önem derecesine göre)
159
+ kastell audit sunucum --fix --dry-run # Düzeltmeleri çalıştırmadan önizle
160
+ kastell audit sunucum --watch # 5 dk aralıkla tekrar denetle, sadece değişiklikleri göster
161
+ kastell audit sunucum --watch 60 # Özel aralık (60 saniye)
162
+ kastell audit --host root@1.2.3.4 # Kayıtlı olmayan sunucuyu denetle
163
+ kastell audit sunucum --badge # SVG rozet çıktısı
164
+ kastell audit sunucum --report html # Tam HTML raporu
165
+ kastell audit sunucum --score-only # Sadece skor (CI uyumlu)
166
+ kastell audit sunucum --summary # Kompakt özet görünümü
167
+ kastell audit sunucum --explain # Başarısız kontrolleri iyileştirme rehberiyle açıkla
168
+ kastell audit sunucum --compliance cis # Uyumluluk çerçevesine göre filtrele (cis-level1, cis-level2, pci-dss, hipaa)
169
+ ```
170
+
171
+ ### Güvenlik Sertleştirme
172
+ ```bash
173
+ kastell lock sunucum # 19 adımlı production sertleştirme (SSH + UFW + sysctl + auditd + AIDE + Docker)
174
+ kastell lock sunucum --dry-run # Sertleştirme adımlarını uygulamadan önizle
167
175
  ```
168
176
 
169
177
  ### İzleme ve Hata Ayıklama
@@ -237,7 +245,7 @@ kastell init --template production --provider hetzner
237
245
 
238
246
  ## Güvenlik
239
247
 
240
- Kastell güvenlik öncelikli olarak geliştirilmektedir -- 149 test suite'inde **3.333 test**, özel güvenlik test suite'leri dahil.
248
+ Kastell güvenlik öncelikli olarak geliştirilmektedir -- 183 test suite'inde **4.178 test**, özel güvenlik test suite'leri dahil.
241
249
 
242
250
  - API token'ları asla diske kaydedilmez -- çalışma zamanında sorulur veya ortam değişkenlerinden alınır
243
251
  - SSH anahtarları gerekirse otomatik oluşturulur (Ed25519)
@@ -249,6 +257,7 @@ Kastell güvenlik öncelikli olarak geliştirilmektedir -- 149 test suite'inde *
249
257
  - İçe/dışa aktarma işlemleri hassas alanları temizler ve dosya izinlerini sıkılaştırır (`0o600`)
250
258
  - `--full-setup` güvenlik duvarı ve SSH sıkılaştırmasını otomatik etkinleştirir
251
259
  - MCP: SAFE_MODE (varsayılan: açık) tüm yıkıcı işlemleri engeller, tüm girdilerde Zod şema doğrulaması, yedek geri yüklemede path traversal koruması
260
+ - Claude Code hook'ları: destroy-block, `--force` olmadan `kastell destroy` komutunu engeller; pre-commit audit guard skor düşüşünde uyarır
252
261
 
253
262
  ## Kurulum
254
263
 
@@ -278,6 +287,8 @@ Platform durumunu kontrol edip gerekirse otomatik yeniden başlatmak için `kast
278
287
 
279
288
  Geliştirme ortamı kurulumu, test ve katkı rehberi için [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın.
280
289
 
290
+ Kastell, 183 suite'te **4.178 test** kullanmaktadır. PR göndermeden önce `npm test` çalıştırın.
291
+
281
292
  ## MCP Sunucusu (Yapay Zeka Entegrasyonu)
282
293
 
283
294
  Kastell, yapay zeka destekli sunucu yönetimi için yerleşik bir [Model Context Protocol](https://modelcontextprotocol.io/) sunucusu içerir. Claude Code, Cursor, Windsurf ve diğer MCP uyumlu istemcilerle çalışır.
@@ -303,22 +314,47 @@ Mevcut araçlar:
303
314
 
304
315
  | Araç | Eylemler | Açıklama |
305
316
  |------|----------|----------|
306
- | `server_info` | list, status, health | Sunucu bilgilerini sorgula, bulut sağlayıcı ve platform durumunu kontrol et |
317
+ | `server_info` | list, status, health, sizes | Sunucu bilgilerini sorgula, bulut sağlayıcı ve platform durumunu kontrol et |
307
318
  | `server_logs` | logs, monitor | SSH ile platform/Docker loglarını ve sistem metriklerini getir |
308
319
  | `server_manage` | add, remove, destroy | Sunucuları kaydet, kaldır veya bulut sunucusunu sil |
309
320
  | `server_maintain` | update, restart, maintain | Platformu güncelle, sunucuları yeniden başlat, tam bakım yap |
310
321
  | `server_secure` | secure, firewall, domain | SSH sıkılaştırma, güvenlik duvarı kuralları, domain/SSL yönetimi (10 alt komut) |
311
322
  | `server_backup` | backup, snapshot | Veritabanı yedekle/geri yükle ve VPS snapshot oluştur/yönet |
312
323
  | `server_provision` | create | Bulut sağlayıcılarda yeni sunucu oluştur |
313
- | `server_audit` | audit | Güvenlik denetimi çalıştır (summary/json/score çıktı formatları) |
324
+ | `server_audit` | audit | 413 kontrollü güvenlik denetimi, uyumluluk çerçevesi filtresiyle; iyileştirme rehberi için `--explain` kullanın |
314
325
  | `server_evidence` | collect | Adli kanıt paketi topla (SHA256 checksum ile) |
315
326
  | `server_guard` | start, stop, status | Otonom güvenlik izleme daemon'u yönet |
316
327
  | `server_doctor` | diagnose | Proaktif sağlık analizi ve iyileştirme komutları |
317
- | `server_lock` | harden | Sunucuyu tek adımda production standardına sıkılaştır |
328
+ | `server_lock` | harden | 19 adımlı production sertleştirme (SSH, UFW, sysctl, auditd, AIDE, Docker) |
318
329
  | `server_fleet` | overview | Tüm filo için sağlık ve güvenlik duruşu panosu |
319
330
 
320
331
  > Tüm yıkıcı işlemler (destroy, restore, snapshot-delete, provision, restart, maintain, snapshot-create) çalıştırılmak için `SAFE_MODE=false` gerektirir.
321
332
 
333
+ ### Claude Code Eklentisi
334
+
335
+ Kastell, Anthropic marketplace için [Claude Code eklentisi](kastell-plugin/) olarak da sunulmaktadır. Eklenti şunları içerir:
336
+
337
+ - **4 beceri**: kastell-ops (mimari referans), kastell-scaffold (bileşen üretimi), kastell-careful (yıkıcı işlem koruyucusu), kastell-research (kod tabanı keşfi)
338
+ - **2 ajan**: kastell-auditor (paralel denetim analizcisi), kastell-fixer (worktree izolasyonlu otomatik düzeltici)
339
+ - **5 hook**: destroy-block, session-audit, session-log, pre-commit-audit-guard, stop-quality-check
340
+
341
+ Kurulum için Claude Code eklenti yöneticisini kullanın ya da doğrudan `claude --plugin-dir kastell-plugin` ile çalıştırın.
342
+
343
+ ### MCP Platform Kurulumu
344
+
345
+ | Platform | Yapılandırma Konumu | Kılavuz |
346
+ |----------|---------------------|---------|
347
+ | Claude Code | `claude mcp add` veya `.mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/claude-code.md) |
348
+ | Claude Desktop | `claude_desktop_config.json` | [Kurulum Rehberi](docs/mcp-platforms/claude-desktop.md) |
349
+ | VS Code / Copilot | `.vscode/mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/vscode.md) |
350
+ | Cursor | `.cursor/mcp.json` | [Kurulum Rehberi](docs/mcp-platforms/cursor.md) |
351
+
352
+ > Daha fazla platform (JetBrains, Windsurf, Gemini ve diğerleri) v2.0'da eklenecek.
353
+
354
+ ### AI Keşfedilebilirliği
355
+
356
+ Kastell, AI tarayıcıları için [`llms.txt`](llms.txt) sağlar ve [MCP Registry](https://registry.modelcontextprotocol.io/)'de `io.github.kastelldev/kastell` olarak listelenmiştir.
357
+
322
358
  `kastell audit` komutunu CI pipeline'ınızda güvenlik eşiği zorunluluğu için kullanın:
323
359
 
324
360
  ```yaml
@@ -340,9 +376,9 @@ jobs:
340
376
 
341
377
  ## Gelecek Planlar
342
378
 
343
- - Audit Pro: 20+ kategoride 400+ güvenlik kontrolü
344
- - AI IDE'ler için plugin ekosistemi
345
- - Dashboard ve yönetilen hizmet
379
+ - Test Mükemmelliği: Mutasyon testi, kapsam boşlukları, entegrasyon testleri (v1.14)
380
+ - Marketplace dağıtımıyla plugin ekosistemi (v2.0)
381
+ - Dashboard ve yönetilen hizmet (v3.0)
346
382
 
347
383
  ## Felsefe
348
384
 
package/SECURITY.md CHANGED
@@ -71,6 +71,15 @@ Response time: Within 48 hours
71
71
  - **SAFE_MODE** (`KASTELL_SAFE_MODE=true`, default enabled for MCP) blocks destructive operations: `destroy`, `restore`, `snapshot-delete`, `provision`, `restart`, `maintain`, `snapshot-create`
72
72
  - Mode guard (`requireCoolifyMode()`) prevents Coolify-specific operations on bare servers
73
73
 
74
+ ### Claude Code Plugin Security
75
+ - Plugin hooks run in the Claude Code process — no separate daemon or elevated privileges
76
+ - `destroy-block` hook prevents accidental `kastell destroy` without explicit `--force` flag
77
+ - `pre-commit-audit-guard` hook compares audit scores before/after — blocks commit if score drops
78
+ - `session-audit` hook runs `kastell audit --silent` at session start — informational only, never blocks
79
+ - Plugin agents (`kastell-auditor`) use `memory: user` scope — audit data stays in user's Claude context
80
+ - `kastell-fixer` uses `isolation: worktree` — runs in a separate git worktree, cannot modify the working tree directly
81
+ - All hooks use Node.js (not shell scripts) for Windows cross-platform compatibility
82
+
74
83
  ### Import/Export Security
75
84
  - Sensitive field stripping on import
76
85
  - Strict file permissions on export
@@ -89,7 +98,7 @@ Response time: Within 48 hours
89
98
  | A6 - Vulnerable Components | See below | Production: 0 vulnerabilities |
90
99
  | A7 - XSS | N/A | CLI tool, no web UI |
91
100
  | A8 - Insecure Deserialization | Mitigated | JSON.parse wrapped in try/catch with safe defaults |
92
- | A9 - Logging & Monitoring | Partial | `sanitizeStderr()` prevents sensitive data in logs |
101
+ | A9 - Logging & Monitoring | Mitigated | `sanitizeStderr()` prevents sensitive data in logs, MCP structured logging via `sendLoggingMessage()` |
93
102
  | A10 - SSRF | Mitigated | `assertValidIp()` on all outbound SSH/HTTP targets |
94
103
 
95
104
  ## Dependency Security
@@ -2,7 +2,10 @@ import type { PlatformAdapter, HealthResult, PlatformStatusResult, PlatformBacku
2
2
  import type { BackupManifest } from "../types/index.js";
3
3
  export declare class CoolifyAdapter implements PlatformAdapter {
4
4
  readonly name = "coolify";
5
- getCloudInit(serverName: string): string;
5
+ readonly port = 8000;
6
+ readonly defaultLogService = "coolify";
7
+ readonly platformPorts: readonly number[];
8
+ getCloudInit(serverName: string, sshPublicKey?: string): string;
6
9
  healthCheck(ip: string, domain?: string): Promise<HealthResult>;
7
10
  createBackup(ip: string, serverName: string, provider: string): Promise<PlatformBackupResult>;
8
11
  restoreBackup(ip: string, backupPath: string, manifest: BackupManifest, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"coolify.d.ts","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IA0FlC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"coolify.d.ts","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,IAAI,QAAgB;IAC7B,QAAQ,CAAC,iBAAiB,aAAa;IACvC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAuC;IAEhF,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAiGzD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
@@ -5,7 +5,10 @@ const SCRIPT_VALIDATE = 'head -c2 "$1" | grep -q "#!" && [ "$(wc -c < "$1")" -gt
5
5
  const COOLIFY_UPDATE_CMD = `curl -fsSL ${COOLIFY_INSTALL_URL} -o /tmp/coolify-install.sh && ${SCRIPT_VALIDATE.replace(/\$1/g, "/tmp/coolify-install.sh")} && bash /tmp/coolify-install.sh && rm -f /tmp/coolify-install.sh`;
6
6
  export class CoolifyAdapter {
7
7
  name = "coolify";
8
- getCloudInit(serverName) {
8
+ port = COOLIFY_PORT;
9
+ defaultLogService = "coolify";
10
+ platformPorts = [80, 443, COOLIFY_PORT, 6001, 6002];
11
+ getCloudInit(serverName, sshPublicKey) {
9
12
  const safeName = serverName.replace(/[^a-z0-9-]/g, "");
10
13
  return `#!/bin/bash
11
14
  set +e
@@ -82,6 +85,13 @@ if ! ss -tlnp | grep -q ':22 '; then
82
85
  sleep 2
83
86
  fi
84
87
 
88
+ # Re-inject SSH public key (Coolify installer may overwrite authorized_keys)
89
+ ${sshPublicKey ? `echo "Re-injecting SSH public key..."
90
+ mkdir -p /root/.ssh
91
+ chmod 700 /root/.ssh
92
+ grep -qF '${sshPublicKey.trim().replace(/'/g, "'\\''")}' /root/.ssh/authorized_keys 2>/dev/null || echo '${sshPublicKey.trim().replace(/'/g, "'\\''")}' >> /root/.ssh/authorized_keys
93
+ chmod 600 /root/.ssh/authorized_keys` : "# No SSH public key provided — skipping re-injection"}
94
+
85
95
  # Wait for services
86
96
  echo "Waiting for Coolify services to start..."
87
97
  sleep 30
@@ -1 +1 @@
1
- {"version":3,"file":"coolify.js","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,cAAc,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,mEAAmE,CAAC;AAE5N,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;;gBASK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,gFAAgF;IAExE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,6GAA6G;YACxH,YAAY,EAAE,8MAA8M;YAC5N,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,iGAAiG;YAC1G,UAAU,EAAE,sHAAsH;YAClI,YAAY,EAAE,6FAA6F;YAC3G,gBAAgB,EAAE,4DAA4D;YAC9E,QAAQ,EAAE,kGAAkG;YAC5G,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,kGAAkG;YACjH,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"coolify.js","sourceRoot":"","sources":["../../src/adapters/coolify.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,10 @@ import type { PlatformAdapter, HealthResult, PlatformStatusResult, PlatformBacku
2
2
  import type { BackupManifest } from "../types/index.js";
3
3
  export declare class DokployAdapter implements PlatformAdapter {
4
4
  readonly name = "dokploy";
5
- getCloudInit(serverName: string): string;
5
+ readonly port = 3000;
6
+ readonly defaultLogService = "dokploy";
7
+ readonly platformPorts: readonly number[];
8
+ getCloudInit(serverName: string, sshPublicKey?: string): string;
6
9
  healthCheck(ip: string, domain?: string): Promise<HealthResult>;
7
10
  createBackup(ip: string, serverName: string, provider: string): Promise<PlatformBackupResult>;
8
11
  restoreBackup(ip: string, backupPath: string, manifest: BackupManifest, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"dokploy.d.ts","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAiGlC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"dokploy.d.ts","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,IAAI,QAAgB;IAC7B,QAAQ,CAAC,iBAAiB,aAAa;IACvC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAA2B;IAEpE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAwGzD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/D,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAI1B,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;CActB"}
@@ -5,7 +5,10 @@ const SCRIPT_VALIDATE = 'head -c2 "$1" | grep -q "#!" && [ "$(wc -c < "$1")" -gt
5
5
  const DOKPLOY_UPDATE_CMD = `curl -sSL ${DOKPLOY_INSTALL_URL} -o /tmp/dokploy-install.sh && ${SCRIPT_VALIDATE.replace(/\$1/g, "/tmp/dokploy-install.sh")} && sh /tmp/dokploy-install.sh update && rm -f /tmp/dokploy-install.sh`;
6
6
  export class DokployAdapter {
7
7
  name = "dokploy";
8
- getCloudInit(serverName) {
8
+ port = DOKPLOY_PORT;
9
+ defaultLogService = "dokploy";
10
+ platformPorts = [80, 443, DOKPLOY_PORT];
11
+ getCloudInit(serverName, sshPublicKey) {
9
12
  const safeName = serverName.replace(/[^a-z0-9-]/g, "");
10
13
  return `#!/bin/bash
11
14
  set +e
@@ -89,6 +92,13 @@ if ! ss -tlnp | grep -q ':22 '; then
89
92
  sleep 2
90
93
  fi
91
94
 
95
+ # Re-inject SSH public key (platform installer may overwrite authorized_keys)
96
+ ${sshPublicKey ? `echo "Re-injecting SSH public key..."
97
+ mkdir -p /root/.ssh
98
+ chmod 700 /root/.ssh
99
+ grep -qF '${sshPublicKey.trim().replace(/'/g, "'\\''")}' /root/.ssh/authorized_keys 2>/dev/null || echo '${sshPublicKey.trim().replace(/'/g, "'\\''")}' >> /root/.ssh/authorized_keys
100
+ chmod 600 /root/.ssh/authorized_keys` : "# No SSH public key provided — skipping re-injection"}
101
+
92
102
  # Wait for services
93
103
  echo "Waiting for Dokploy services to start..."
94
104
  sleep 30
@@ -1 +1 @@
1
- {"version":3,"file":"dokploy.js","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxH,4EAA4E;AAC5E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,MAAM,kBAAkB,GAAG,aAAa,mBAAmB,kCAAkC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,wEAAwE,CAAC;AAEhO,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,SAAS,CAAC;IAE1B,YAAY,CAAC,UAAkB;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO;;;;;;;;;gBASK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFvB,CAAC;IACA,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,MAAe;QAC3C,OAAO,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,UAAkB,EAClB,QAAgB;QAEhB,OAAO,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,UAAkB,EAClB,QAAwB,EACxB,OAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,+EAA+E;IAEvE,UAAU;QAChB,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,8JAA8J;YACzK,YAAY,EAAE,sDAAsD;YACpE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,UAAU,EAAE,6DAA6D;YACzE,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,gCAAgC;YACzC,UAAU,EAAE,oDAAoD;YAChE,YAAY,EAAE,8IAA8I;YAC5J,gBAAgB,EAAE,oDAAoD;YACtE,QAAQ,EAAE,gCAAgC;YAC1C,UAAU,EAAE,6DAA6D;YACzE,aAAa,EAAE,gCAAgC;YAC/C,UAAU,EAAE,uBAAuB;YACnC,cAAc,EAAE,uBAAuB;SACxC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"dokploy.js","sourceRoot":"","sources":["../../src/adapters/dokploy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { BackupManifest } from "../types/index.js";
2
+ import type { LogService } from "../core/logs.js";
2
3
  /**
3
4
  * Result of a platform health check.
4
5
  *
@@ -89,15 +90,34 @@ export interface PlatformAdapter {
89
90
  * @example "coolify" | "dokploy"
90
91
  */
91
92
  readonly name: string;
93
+ /**
94
+ * Default HTTP port for the platform's web UI.
95
+ * Used by commands that need the platform port without importing constants directly.
96
+ * @example 8000 (Coolify) | 3000 (Dokploy)
97
+ */
98
+ readonly port: number;
99
+ /**
100
+ * Default log service name for `kastell logs` when no `--service` is specified.
101
+ * Matches the platform name (lowercase).
102
+ * @example "coolify" | "dokploy"
103
+ */
104
+ readonly defaultLogService: LogService;
105
+ /**
106
+ * Ports required by this platform that should be protected from firewall removal.
107
+ * Includes HTTP (80), HTTPS (443), the platform port, and any additional service ports.
108
+ */
109
+ readonly platformPorts: readonly number[];
92
110
  /**
93
111
  * Returns a cloud-init bash script that installs the platform on a fresh
94
112
  * Ubuntu/Debian server. Executed once during `kastell init`.
95
113
  *
96
114
  * @param serverName - Server name used inside the script for logging.
97
115
  * Sanitized to `[a-z0-9-]` before insertion.
116
+ * @param sshPublicKey - Optional SSH public key to re-inject after platform
117
+ * installation (some installers overwrite authorized_keys).
98
118
  * @returns A bash script string starting with `#!/bin/bash`.
99
119
  */
100
- getCloudInit(serverName: string): string;
120
+ getCloudInit(serverName: string, sshPublicKey?: string): string;
101
121
  /**
102
122
  * Checks whether the platform's web UI is reachable.
103
123
  * Tries HTTPS via domain first (if provided), then falls back to HTTP on
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/adapters/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;OAOG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhE;;;;;;;;;;;OAWG;IACH,YAAY,CACV,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/adapters/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C;;;;;;;;;OASG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhE;;;;;;;;;;;OAWG;IACH,YAAY,CACV,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,CACZ,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAErD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C"}
@@ -59,4 +59,11 @@ export declare function sharedCreateBackup(ip: string, serverName: string, provi
59
59
  export declare function sharedRestoreBackup(ip: string, backupPath: string, _manifest: BackupManifest, config: AdapterRestoreConfig, _options?: {
60
60
  force?: boolean;
61
61
  }): Promise<PlatformRestoreResult>;
62
+ /**
63
+ * Returns a capitalized display name for a platform adapter.
64
+ * @example adapterDisplayName(coolifyAdapter) => "Coolify"
65
+ */
66
+ export declare function adapterDisplayName(adapter: {
67
+ readonly name: string;
68
+ }): string;
62
69
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAsBvB;AASD,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAoBvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAID,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAuF/B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiIhC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAsBvB;AASD,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAoBvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAID,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAuF/B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiIhC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE7E"}
@@ -192,7 +192,7 @@ export async function sharedRestoreBackup(ip, backupPath, _manifest, config, _op
192
192
  }
193
193
  steps.push({ name: "Upload config backup", status: "success" });
194
194
  // Step 1: Stop platform
195
- const platformLabel = config.platform.charAt(0).toUpperCase() + config.platform.slice(1);
195
+ const platformLabel = adapterDisplayName({ name: config.platform });
196
196
  const stopResult = await sshExec(ip, config.stopCmd);
197
197
  if (stopResult.code !== 0) {
198
198
  steps.push({
@@ -264,4 +264,11 @@ export async function sharedRestoreBackup(ip, backupPath, _manifest, config, _op
264
264
  };
265
265
  }
266
266
  }
267
+ /**
268
+ * Returns a capitalized display name for a platform adapter.
269
+ * @example adapterDisplayName(coolifyAdapter) => "Coolify"
270
+ */
271
+ export function adapterDisplayName(adapter) {
272
+ return adapter.name.charAt(0).toUpperCase() + adapter.name.slice(1);
273
+ }
267
274
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AA2PA,wBAAsB,aAAa,CACjC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF,OAAO,CAAC,IAAI,CAAC,CAoGf"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAgOA,wBAAsB,aAAa,CACjC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAChF,OAAO,CAAC,IAAI,CAAC,CA2Ef"}