npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lastgen-cli

v1.2.3

Published

Lastgen — OpenAI uyumlu API'lere bağlanan interaktif terminal AI sohbet CLI'ı

Readme

LASTGEN CLI

Lastgen Software CLI Project

OpenAI uyumlu (/v1/chat/completions, /v1/models) herhangi bir API'ye bağlanan terminal yazılım geliştirme asistanı. Projenin kök dizininde açılır; sohbet ederek kodu okur, değişikliği kendisi uygular ve derleyip test ederek doğrular.

Trello · Jira · GitHub entegrasyonları bunun üzerine gelen opsiyonel katmanlardır — asıl iş sohbetin içinde döner.

Kurumsal LiteLLM proxy, GLM z.ai, OpenAI, OpenRouter, Groq, Together, LM Studio, Ollama gibi tüm OpenAI uyumlu endpoint'lerle çalışır.


Kurulum

npm install
npm run build
npm link        # global "lastgen" komutu

Kullanım

lastgen

İlk çalıştırmada yapılandırma yoksa otomatik olarak /login akışı başlar.


Sohbetle Geliştirme (ana kullanım)

Projenin kökünde lastgen yazıp ne istediğini cümleyle söylersin:

› DriverRouteService'te sürücü listesi her istekte tekrar sorgulanıyor, önbelleğe al

Lastgen sırasıyla: ilgili dosyaları araçlarla okur (tahmin etmez) → değişikliği kendisi uygular → projenin gerçek test/derleme komutunu çalıştırıp doğrular (hata çıkarsa okur, düzeltir, tekrar dener — en fazla 3 kez) → ne yaptığını dosya dosya raporlar.

İki mod var (Shift+Tab veya /bypass ile geçilir):

| Mod | Davranış | |-----|----------| | ◆ ask before changes | Varsayılan. Her dosya yazma ve her komut, ±3 satır bağlamlı diff önizlemesiyle onayına sunulur. Onay beklerken süre sayacı durur | | ⚡ bypass permissions on | Onay sorulmaz. Güvenlik katmanları (yol sınırı, komut whitelist'i, yedekleme) yine çalışır — yalnızca sorma kapanır |

Cevap akarak gelir: model metni ürettikçe satır satır ekrana düşer, tamamının bitmesi beklenmez. Araç çalıştırmadan önce ▸ ile başlayan tek satırlık ilerleme notları düşer; nihai cevap mavi bir nokta (●) ile başlar. (Headless -p modunda çıktı bilinçli olarak tek parçadır — pipe ve CI kullanımıyla uyumlu kalsın diye.)

GitHub, Jira veya Trello'ya login olduysan sohbete doğrudan canlı veri sorabilirsin: "açık PR'ları listele", "JIRA'da ödeme ile ilgili issue'ları bul", "şu repodaki son issue'lar" dediğinde Lastgen gerçek API'den çekip listeler (salt-okuma). Yalnız token'ı olan sağlayıcının araçları etkinleşir. Lastgen ayrıca kendi CLI yeteneklerinin farkındadır — "PR'lara nasıl bakarım" gibi bir soruda uygun slash komutunu (/github) önerir.

Web/HTML doğrulama (opsiyonel): Playwright kuruluysa Lastgen bir HTML/site değişikliğinden sonra sayfayı gerçekten tarayıcıda açıp kontrol edebilir — browser_navigate (URL veya proje-içi yerel dosya), browser_snapshot (içeriği okur), browser_console (konsol/JS hatası), browser_click/browser_fill (form akışı), browser_screenshot (.lastgen/screenshots/). Yan etkili işlemler onay akışından geçer; salt-okuma yolları (-p, PR reviewer) tarayıcı araçlarını almaz. Etkinleştirmek için: npm i -D playwright && npx playwright install chromium — kurulu değilse araçlar hiç görünmez (lastgen kurulumu hafif kalır).

Kararı sana bırakır (ask_user): Belirsiz ya da geri dönüşü zor bir seçimde (bir alt kümeye işlem uygulanacak ama hangi öğeler belirsizse, ya da ne oluşturulacağı/adı/adedi belirtilmemişse) Lastgen kafasına göre seçmez — seçenekli bir soru açar. Tek seçimde ↵ ile seçersin; çok seçimde ↵ ile öğeleri işaretler, en alttaki belirgin "➤ Cevapları gönder" butonuyla yollarsın; ya da "Kendi cevabımı yazayım…" ile serbest metin girersin. Cevabın ekrana ❯ Cevabın: … olarak yazılır ve ona göre devam eder. Bu, ⚡ bypass modunda da geçerlidir — bypass yalnız işlem onayını kaldırır, seçim sormayı değil. Öneri/özet tabloları da terminalde hizalı, çerçeveli çizilir (Türkçe kaymaz).

/init ile bir kez proje bağlam belgesi (LASTGEN.md) üretirsen, sonraki her soruda sistem promptuna eklenir ve model projeyi tanıyarak başlar. Zorunlu değildir.


Arayüz

╭──────────────────────────────────────╮
│  lastGen pixel logo                  │
│  LASTGEN CLI · Global / Kurumsal AI      │
│  Lastgen Software CLI Project        │
╰──────────────────────────────────────╯

◢ LASTGEN  Merhaba! Bugün ne keşfediyoruz?

  ╭─────────────────────────────────╮
  │ kullanıcı mesajı (beyaz balon)  │
  ╰─────────────────────────────────╯

◢ LASTGEN · glm-5.2
Yanıt token token akar (daktilo efekti)...
↳ 312 tok  ·  4.1s

  ┄──────────────────────────────────
  [1] kuyrukta bekleyen mesaj         ← Ctrl+O ile genişlet/daralt
  ┄──────────────────────────────────
╭──────────────────────────────────────╮
│ › /trello-write-plan▌                │
╰─────────────────── total token: 1.2k╯

TUI özellikleri:

| Özellik | Açıklama | |---------|----------| | Inline render | Alternate buffer YOK — biten çıktı terminalin kendi scrollback'ine yazılır, native fare seçimi/kopyalama/scroll çalışır. Canlı bölge (prompt kutusu) scroll-region ile alta sabitlenir; resize'da bozulmaz | | Daktilo efekti | LASTGEN yanıtları token token yazılır (Markdown render) | | Düşünme animasyonu | Türkçe cümleler glitch→decode efektiyle geçiş yapar | | Scroll | Terminalin kendi scroll'u (fare tekerleği dahil) — uygulama içi tampon yok | | Kuyruk (queue) | LASTGEN meşgulken mesajlar sıraya girer, ↑/↓ ile düzenle | | Ctrl+O | Tool call stack'ini genişlet/daralt | | Paste desteği | Bracketed paste — çok satırlı metin ⌗1 47 satır olarak gösterilir | | Komut renklendirme | Bilinen komut sarı, bilinmeyen kırmızı (Enter'a basmadan yazım hatası görünür) | | Syntax highlighting | Kod blokları VS Code Dark+ temasına yakın renklendirilir | | Rich formatting | Dosya yolu (mavi), class (cyan), fonksiyon (yeşil), satır no (sarı) | | Token göstergesi | Tek biçim çip (⬡ N TOKENS · ◷ süre): sohbet, write-plan ve execute-plan hem çalışırken hem tamamlandığında aynı çipi gösterir (canlı sayaç işledikçe güncellenir); sağ altta total token | | Karşılama / veda | Açılışta logo decode animasyonu + Türkçe karşılama, CTRL+C'de veda mesajı | | Lastgen logosu | Banner'da piksel bazlı LED dot-matrix, açılışta glitch→decode efekti | | Ekstra bağlam | write-plan'da kart/issue seçildikten sonra "Seçilen Task" kutusu + opsiyonel ekstra bilgi girişi |

Klavye kısayolları

| Tuş | İşlev | |-----|-------| | Enter | Mesaj gönder | | Ctrl+Enter | İmleç konumuna satır sonu ekle (göndermeden — çok satırlı giriş) | | ↑ / ↓ | Girdi geçmişi · Kuyruk gezme (LASTGEN meşgulken) | | Ctrl+← / Ctrl+→ | İmleci kelime kelime sola/sağa taşı | | Ctrl+Delete | Sağdaki kelimeyi sil (satır sonundaysa son kelimeyi) | | Home / End | Satır başı / sonu | | Shift+Tab | Onay ↔ bypass modu arasında geçiş | | Ctrl+O | Araç çağrı yığınını genişlet/daralt | | Ctrl+C | Çalışan komutu/isteği/plan araştırmasını kes (oturum kapanmaz) · boşta ise veda + kayıt + çıkış |


Oturum Yönetimi

~/.lastgen/
├── config.json         # API yapılandırması
├── current-session     # Aktif oturum ID'si
└── sessions/
    ├── 20260618-153000-ab12.json
    └── ...
  • Yeni oturum: lastgen her açıldığında yeni oturum başlar
  • Geçiş: /resume ile ok tuşlu seçici açılır
  • Silme: Session picker'da D tuşu

Komutlar

| Komut | Açıklama | |-------|----------| | /login | Endpoint türü seç (Kurumsal / Global), key gir, doğrula, kaydet | | /models | Modelleri listele ve aktif modeli seç | | /github · /jira · /trello | Tek sağlayıcı menüsü (argümansız çağır) — ortak kısayollar: W write-plan · X execute-plan · P planlar · L login · Ctrl+L çıkış · B gözat (github). Jira menüsünde ayrıca C — Backlog oluştur: serbest metinden house-style epic/story/subtask + link üretir, önizleme-onay sonrası Jira'ya yazar. GitHub'da PR/Branch listesinde Boşluk ile birden çok öğe işaretleyip R ile TOPLU code review (hepsini TEK BÜTÜN olarak inceler, birleşik raporu .lastgen/reviews/'a yazar). PR review artık PR açıklaması + tüm yorumları + satır-içi diff yorumlarını da değerlendirmeye katar (doğrular, körü körüne kabul etmez). Review bitince sonucu seçili tüm PR'lara aynı anda gönderebilirsin — Comment / Approve / Request changes. GitHub menüsünde Yerel Branch'ler: workspace'te repo repo gezip yerel branch değiştir (checkout) · pull · fetch · yeni branch (kirli ağaçta checkout engellenir — veri kaybı yok). Eski *-login/*-write-plan/*-execute-plan alt komutları menüye taşındı | | /ship [ISSUE-KEY] | Uçtan uca otonom: Jira task seç → geliştir → kendi kendine code review → 🔴 Kritik / 🟡 Önemli bulgu kalırsa yeniden düzelt-review (en çok 3 tur) → temizlenince otomatik branch + commit + push + GitHub PR | | /pulse [kaynaklar] | Bağlı entegrasyonlardan proje durumu HTML rapor deck'i üret (/pulse jira ile daralt) — .lastgen/reports/'a yazar | | /export | Aktif oturumu .lastgen/exports/ altına Markdown olarak aktar | | /prompt | Sistem prompt editörü | | /config | Mevcut bağlantı ayarlarını göster | | /clear | Ekranı temizle | | /reset | Sohbet geçmişini sıfırla | | /resume | Ok tuşlu seçiciyle kayıtlı oturumlar arasında geçiş yap | | /session-delete | Eski oturumları sil | | /help | Yardımı göster | | /exit | Çıkış (Ctrl+C de çalışır) | | /init | Projeyi araçlarla keşfet, LASTGEN.md bağlam belgesi üret (--force ile mevcut olanı iyileştir) | | /agents · /agent <ad> <görev> | Alt-agent kütüphanesi ve manuel çalıştırma | | /review | Lokal git diff'ine AI code review — klasör repo değilse alt klasördeki tüm repoları birlikte inceler | | /undo | Son execute'un patch'lerini ters uygula | | /compact | Uzun sohbeti LLM ile özetleyip bağlamı küçült | | /search <kelime> | Tüm kayıtlı oturumlarda tam-içerik arama | | /stats · /profile | Oturum/token istatistikleri · aktif config profili | | /commands | Özel slash komutlarını listele (.lastgen/commands/*.md) |


Coding Agent Pipeline

/trello-write-plan

Trello kartını gerçek kaynak kodla analiz ederek atomik uygulama planı üretir.

1. Pano seçici (ok tuşlu) → Kart seçici (ok tuşlu)
2. Seçilen Task kutusu + ekstra bilgi promptu (opsiyonel)
3. AI araştırma: list_files + read_file ile proje incelenir
   ⚙ 34 araç çağrısı  Ctrl+O genişlet
4. Araştırma özeti → bağlam sıkıştırma
5. JSON plan üretimi (temperature: 0.3, token limiti yok)
6. .trello_plans/{id}.json olarak kaydedilir

Plan formatı (JSON):

{
  "task_source": "Trello",
  "task_id": "AbCdEfGh",
  "title": "Görev başlığı",
  "summary": "Teknik özet",
  "affected_files": ["src/services/UserService.java"],
  "steps": [
    {
      "step_number": 1,
      "description": "UUID import ekle",
      "target_file": "src/utils/UsernameGenerator.java",
      "instructions": "generateUsername() metodunu güncelle..."
    }
  ],
  "verification_command": "mvn test"
}

/trello-execute-plan

Kaydedilen planı seçip Coding Agent ile uygular.

1. Plan seçici (ok tuşlu)
2. Onay
3. Agent döngüsü:
   - Her adım: read_file → apply_patch → run_command (test)
   - Test başarısızsa: hata analiz → yeni patch → tekrar test
   - Döngü sonu: verification_command otomatik çalıştırılır
4. Tüm çıktılar TUI transcript'e yazılır

Güvenlik:

  • Yalnızca proje dizini içindeki dosyalara erişim (path traversal, sürücü kaçışı ve symlink çıkışı reddedilir)
  • İzinli komutlar ekosistemden bağımsız: Python, JS/TS (npm · yarn · pnpm · bun · deno), Go, Rust, JVM, .NET, Ruby, PHP, Elixir, Dart/Flutter, Swift, Zig, CMake, Haskell/Scala/Clojure ve genel koşucular (make · just · task). npx ve go run reddedilir; dotnet/dart/mvn/gradle yalnızca derleme-test hedefleriyle geçer; shell operatörleri (; | > ` $() yasak — yalnızca && zinciri
  • Sunucu/izleme (watch) modunda çalışan komutlar reddedilir — bitmezler ve arayüz donmuş görünür
  • Her apply_patch .{timestamp}.bak yedek oluşturur; yalnızca tek benzersiz eşleşme değiştirilir
  • Çalışan komut Ctrl+C ile süreç ağacıyla birlikte kesilir; mutlak tavan 10 dk
  • Onay soracak arayüzü olmayan yollar (lastgen -p, PR Reviewer) salt-okuma araç setiyle çalışır
  • Beklenmedik bir çökmede terminal eski hâline döndürülür, neden ~/.lastgen/crash.log'a yazılır

Headless Kullanım (script / CI)

TUI açılmadan çalışır; sonuç stdout'a, ilerleme stderr'e gider, çıkış kodu 0/1 döner.

lastgen -p "bu serviste hangi cache stratejisi var?"    # tek soru — SALT-OKUMA
cat hata.log | lastgen -p "bu stack trace'i açıkla"     # boru ile besleme
lastgen review owner/repo#77 --output review.md --post  # GitHub PR incelemesi
lastgen review                                          # lokal git diff incelemesi
lastgen commit-msg | git commit -F -                    # commit mesajı üret
lastgen doctor                                          # config/LLM/GitHub/Jira/Trello teşhisi

-p salt-okumadır. Onay soracak bir arayüz olmadığı için dosya yazma (apply_patch/create_file) ve komut çalıştırma (run_command) araçları bu modda kapalıdır; model ne yapılması gerektiğini anlatır, uygulamaz. Aynı kural PR Reviewer için de geçerlidir.


Endpoint Türleri

| Tür | Açıklama | |-----|----------| | Kurumsal | Endpoint elle girilir, verifySsl/caBundlePath desteklenir | | Global (GLM z.ai) | https://api.z.ai/api/coding/paas/v4 sabit, sadece API key istenir |


Yapılandırma

~/.lastgen/config.json:

{
  "provider": "external",
  "baseUrl": "https://api.z.ai/api/coding/paas/v4",
  "apiKey": "<Z_AI_API_KEY>",
  "model": "glm-5.2",
  "maxContextTokens": 128000,
  "trelloKey": "<TRELLO_APP_KEY>",
  "trelloToken": "<TRELLO_USER_TOKEN>",
  "trelloBoardId": "<BOARD_ID>",
  "trelloBoardName": "My Board",
  "jiraBaseUrl": "https://jira.sirket.com",
  "jiraToken": "<JIRA_PAT>"
}

maxContextTokens — modele gönderilecek bağlamın üst sınırı (token). Belirtilmezse 128000. Geçmiş bu bütçeye göre kırpılır; en yeni mesajlar korunur.

Token ekonomisi (sohbet + write/execute-plan): Her model çağrısı, biriken TÜM bağlamı değil karakter-bütçeli kayan pencereyi gönderir (sohbet 64k, execute 24k, plan 40k) → karesel token büyümesi kırılır. Bir dosya düzenlenince o dosyanın önceki read_file çıktıları kısa bir stub'a indirilir (bayat koca içerik yeniden gönderilmez). Promptlar büyük dosyada tam okuma yerine grep → start_line/end_line bölge okumasını söyler. Uzun sohbet geçmişi bağlam bütçesinin %65'ini aşınca turdan önce otomatik yapılandırılmış özete indirilir.


Ortam Değişkenleri

| Değişken | Açıklama | |----------|----------| | LASTGEN_CONFIG_DIR | Yapılandırma dizini (varsayılan: ~/.lastgen) | | LASTGEN_NO_TUI | 1 → TUI devre dışı, klasik readline modu | | LASTGEN_KEYLOG | 1 → giriş tuşlarının ham baytlarını ~/.lastgen/keylog.txt'ye yazar (tuş dizisi tanısı; üretimde kapalı) |


Geliştirme

npm test          # Vitest birim testleri + tsc --noEmit (786 test)
npm run lint      # ESLint (flat config) — 0 error zorunlu
npm run eval      # Prompt değerlendirme (gerçek modele gider, CI'da koşmaz)
                  #   --tekrar 3 önerilir; tek koşu yanıltıcıdır
npm run typecheck # Yalnızca TypeScript tip kontrolü
npm run build     # dist/ çıktısı (tsup, ESM)

CI (.github/workflows/ci.yml) her push ve pull request'te Node 18 · 20 · 22 matrisinde npm ci → lint → build → test çalıştırır. Minimum Node sürümü 18.17 (AbortSignal.any bu sürümde geldi).

Proje yapısı:

src/
├── index.ts              # Giriş noktası, arg yönlendirme, temiz çıkış (drain)
├── repl.ts               # Klasik readline modu (TUI açılamazsa)
├── tui.ts                # Ana TUI — pinned scroll-region inline render
├── live-render.ts        # Çerçeve üreticileri (saf): buildPinnedLiveFrame
├── terminal.ts           # Terminal geri yükleme + çökme yakalayıcıları
├── tui-format.ts         # tui.ts'ten ayrılan saf biçimlendirme
├── tui-status.ts         # Durum satırı / kota göstergesi (saf)
├── diff-preview.ts       # Onay kutusu diff önizlemesi (saf)
│
├── agent-loop.ts         # Sohbet turu + execute döngüsü + callModel (streaming)
├── agent-plan.ts         # Write-plan: araştırma, JSON plan üretimi
├── agent-tools.ts        # list_files, read_file, apply_patch, run_command, güvenlik
├── agent-init.ts         # /init — LASTGEN.md proje bağlamı üretimi
├── subagent.ts           # İzole alt-agent döngüsü
├── agents.ts             # Alt-agent tanımları (.md frontmatter)
├── todos.ts              # Görev adımı paneli (saf)
│
├── chat-context.ts       # Bağlam kurma + token bütçeli kırpma (saf)
├── tokens.ts             # Token tahmini — tek kaynak
├── stack-detect.ts       # Test komutu tespiti (16 ekosistem)
├── edit-journal.ts       # Sohbet değişiklik defteri (/undo)
├── eval/                 # Prompt değerlendirme senaryoları ve koşucusu
├── compaction.ts         # /compact — geçmiş özetleme
├── command-registry.ts   # Slash komut tanımları — tek kaynak
├── commands.ts           # Komut dağıtımı + agent fonksiyonları
├── custom-commands.ts    # Kullanıcı tanımlı slash komutları
│
├── api.ts                # OpenAI uyumlu streaming + tool calling
├── http.ts               # Ortak taşıma: retry, Retry-After, TLS
├── stream-accumulate.ts  # SSE delta birleştirme (saf)
│
├── github.ts             # GitHub REST (PR, branch, issue, review)
├── pr-review.ts          # PR/branch code review motoru (salt-okuma)
├── git-local.ts          # Lokal git diff, /review, /commit-msg
├── jira.ts               # Jira REST + pano/issue seçici
├── trello.ts             # Trello API + kart/pano seçici
│
├── headless.ts           # -p / review / commit-msg / doctor
├── sessions.ts           # Oturum kayıt/yükleme/arama
├── session-picker.ts     # Ok tuşlu oturum seçici
├── config.ts             # Yapılandırma + profiller
├── providers.ts          # Endpoint preset sistemi
├── markdown.ts           # Markdown→ANSI + syntax highlighting
├── rich-format.ts        # Terminal rich formatting
├── ui.ts                 # Renkler, animasyon, banner, seçici
└── context.ts            # Proje dosyası tarayıcı

scripts/
└── png-to-blocks.mjs     # PNG → terminal half-block dönüştürücü

Lisans

MIT