lastgen-cli 1.0.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.
- package/README.md +269 -0
- package/dist/agent-init-CBHFO47V.js +15 -0
- package/dist/chunk-ESFGGWR6.js +799 -0
- package/dist/chunk-JGVBNMNK.js +257 -0
- package/dist/chunk-JUKR4XSW.js +283 -0
- package/dist/chunk-NILKRTZZ.js +108 -0
- package/dist/chunk-UV67GGHZ.js +1169 -0
- package/dist/index.js +4583 -0
- package/dist/jira-6526JRPQ.js +14 -0
- package/dist/trello-DY6WYSKB.js +24 -0
- package/dist/ui-QJPYDWYD.js +75 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# QAI CLI
|
|
2
|
+
|
|
3
|
+
> **Lastgen Software CLI Project**
|
|
4
|
+
|
|
5
|
+
OpenAI uyumlu (`/v1/chat/completions`, `/v1/models`) herhangi bir API'ye bağlanan,
|
|
6
|
+
terminal içinde tam ekran **TUI** arayüzüyle çalışan Global / Kurumsal AI Terminal Asistanı.
|
|
7
|
+
|
|
8
|
+
Kurumsal LiteLLM proxy, GLM z.ai, OpenAI, OpenRouter, Groq, Together, LM Studio,
|
|
9
|
+
Ollama gibi tüm OpenAI uyumlu endpoint'lerle çalışır.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Kurulum
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install
|
|
17
|
+
npm run build
|
|
18
|
+
npm link # global "qai" komutu
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Kullanım
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
qai
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
İlk çalıştırmada yapılandırma yoksa otomatik olarak `/login` akışı başlar.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Tam Ekran TUI
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
╭──────────────────────────────────────╮
|
|
37
|
+
│ lastGen pixel logo │
|
|
38
|
+
│ QAI CLI · Global / Kurumsal AI │
|
|
39
|
+
│ Lastgen Software CLI Project │
|
|
40
|
+
╰──────────────────────────────────────╯
|
|
41
|
+
|
|
42
|
+
◢ QAI Merhaba! Bugün ne keşfediyoruz?
|
|
43
|
+
|
|
44
|
+
╭─────────────────────────────────╮
|
|
45
|
+
│ kullanıcı mesajı (beyaz balon) │
|
|
46
|
+
╰─────────────────────────────────╯
|
|
47
|
+
|
|
48
|
+
◢ QAI · glm-5.2
|
|
49
|
+
Yanıt token token akar (daktilo efekti)...
|
|
50
|
+
↳ 312 tok · 4.1s
|
|
51
|
+
|
|
52
|
+
┄──────────────────────────────────
|
|
53
|
+
[1] kuyrukta bekleyen mesaj ← Ctrl+O ile genişlet/daralt
|
|
54
|
+
┄──────────────────────────────────
|
|
55
|
+
╭──────────────────────────────────────╮
|
|
56
|
+
│ › /trello-write-plan▌ │
|
|
57
|
+
╰─────────────────── total token: 1.2k╯
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**TUI özellikleri:**
|
|
61
|
+
|
|
62
|
+
| Özellik | Açıklama |
|
|
63
|
+
|---------|----------|
|
|
64
|
+
| Tam ekran alternate buffer | Resize'da bozulma yok, synchronized output |
|
|
65
|
+
| Daktilo efekti | QAI yanıtları token token yazılır (Markdown render) |
|
|
66
|
+
| Düşünme animasyonu | Türkçe cümleler glitch→decode efektiyle geçiş yapar |
|
|
67
|
+
| Scroll | `↑`/`↓` satır satır, `PgUp`/`PgDn` yarım ekran |
|
|
68
|
+
| Kuyruk (queue) | QAI meşgulken mesajlar sıraya girer, `↑`/`↓` ile düzenle |
|
|
69
|
+
| Ctrl+O | Tool call stack'ini genişlet/daralt |
|
|
70
|
+
| Paste desteği | Bracketed paste — çok satırlı metin `⌗1 47 satır` olarak gösterilir |
|
|
71
|
+
| Komut renklendirme | `/login` mavi, bilinmeyen komut kırmızı |
|
|
72
|
+
| Syntax highlighting | Kod blokları VS Code Dark+ temasına yakın renklendirilir |
|
|
73
|
+
| Rich formatting | Dosya yolu (mavi), class (cyan), fonksiyon (yeşil), satır no (sarı) |
|
|
74
|
+
| Token göstergesi | Her yanıtta `↳ tok · s` (yeşil), sağ altta `total token` |
|
|
75
|
+
| Karşılama / veda | Açılışta logo decode animasyonu + Türkçe karşılama, CTRL+C'de veda mesajı |
|
|
76
|
+
| Lastgen logosu | Banner'da piksel bazlı LED dot-matrix, açılışta glitch→decode efekti |
|
|
77
|
+
| Ekstra bağlam | write-plan'da kart/issue seçildikten sonra "Seçilen Task" kutusu + opsiyonel ekstra bilgi girişi |
|
|
78
|
+
|
|
79
|
+
### Klavye kısayolları
|
|
80
|
+
|
|
81
|
+
| Tuş | İşlev |
|
|
82
|
+
|-----|-------|
|
|
83
|
+
| `Enter` | Mesaj gönder |
|
|
84
|
+
| `↑` / `↓` | Scroll (normal) · Kuyruk gezme (QAI meşgulken) |
|
|
85
|
+
| `PgUp` / `PgDn` | Yarım ekran scroll |
|
|
86
|
+
| `Ctrl+O` | Tool call stack genişlet/daralt (write-plan sırasında) |
|
|
87
|
+
| `Ctrl+C` | Veda animasyonu + kayıt + çıkış |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Oturum Yönetimi
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
~/.qai/
|
|
95
|
+
├── config.json # API yapılandırması
|
|
96
|
+
├── current-session # Aktif oturum ID'si
|
|
97
|
+
└── sessions/
|
|
98
|
+
├── 20260618-153000-ab12.json
|
|
99
|
+
└── ...
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- **Yeni oturum**: `qai` her açıldığında yeni oturum başlar
|
|
103
|
+
- **Geçiş**: `/resume` ile ok tuşlu seçici açılır
|
|
104
|
+
- **Silme**: Session picker'da `D` tuşu
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Komutlar
|
|
109
|
+
|
|
110
|
+
| Komut | Açıklama |
|
|
111
|
+
|-------|----------|
|
|
112
|
+
| `/login` | Endpoint türü seç (Kurumsal / Global), key gir, doğrula, kaydet |
|
|
113
|
+
| `/models` | Modelleri listele ve aktif modeli seç |
|
|
114
|
+
| `/trello` | Trello kartından geliştirme planı üret ve dosyaya kaydet |
|
|
115
|
+
| `/trello-login` | Trello App Key ve Token ayarla |
|
|
116
|
+
| `/trello-write-plan` | Trello kartını AI ile analiz et, JSON uygulama planı üret |
|
|
117
|
+
| `/trello-execute-plan` | Kaydedilen planı seçip Coding Agent ile uygula |
|
|
118
|
+
| `/jira <KEY>` | Jira task'ından geliştirme planı üret |
|
|
119
|
+
| `/jira-login` | Jira base URL ve PAT ayarla |
|
|
120
|
+
| `/export` | Aktif oturumu Markdown dosyasına aktar |
|
|
121
|
+
| `/prompt` | Sistem prompt editörü |
|
|
122
|
+
| `/config` | Mevcut bağlantı ayarlarını göster |
|
|
123
|
+
| `/clear` | Ekranı temizle |
|
|
124
|
+
| `/reset` | Sohbet geçmişini sıfırla |
|
|
125
|
+
| `/resume` | Ok tuşlu seçiciyle kayıtlı oturumlar arasında geçiş yap |
|
|
126
|
+
| `/session-delete` | Eski oturumları sil |
|
|
127
|
+
| `/help` | Yardımı göster |
|
|
128
|
+
| `/exit` | Çıkış (Ctrl+C de çalışır) |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Coding Agent Pipeline
|
|
133
|
+
|
|
134
|
+
### `/trello-write-plan`
|
|
135
|
+
|
|
136
|
+
Trello kartını gerçek kaynak kodla analiz ederek atomik uygulama planı üretir.
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
1. Pano seçici (ok tuşlu) → Kart seçici (ok tuşlu)
|
|
140
|
+
2. Seçilen Task kutusu + ekstra bilgi promptu (opsiyonel)
|
|
141
|
+
3. AI araştırma: list_files + read_file ile proje incelenir
|
|
142
|
+
⚙ 34 araç çağrısı Ctrl+O genişlet
|
|
143
|
+
4. Araştırma özeti → bağlam sıkıştırma
|
|
144
|
+
5. JSON plan üretimi (temperature: 0.3, token limiti yok)
|
|
145
|
+
6. .trello_plans/{id}.json olarak kaydedilir
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Plan formatı (JSON):
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"task_source": "Trello",
|
|
152
|
+
"task_id": "AbCdEfGh",
|
|
153
|
+
"title": "Görev başlığı",
|
|
154
|
+
"summary": "Teknik özet",
|
|
155
|
+
"affected_files": ["src/services/UserService.java"],
|
|
156
|
+
"steps": [
|
|
157
|
+
{
|
|
158
|
+
"step_number": 1,
|
|
159
|
+
"description": "UUID import ekle",
|
|
160
|
+
"target_file": "src/utils/UsernameGenerator.java",
|
|
161
|
+
"instructions": "generateUsername() metodunu güncelle..."
|
|
162
|
+
}
|
|
163
|
+
],
|
|
164
|
+
"verification_command": "mvn test"
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### `/trello-execute-plan`
|
|
169
|
+
|
|
170
|
+
Kaydedilen planı seçip Coding Agent ile uygular.
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
1. Plan seçici (ok tuşlu)
|
|
174
|
+
2. Onay
|
|
175
|
+
3. Agent döngüsü:
|
|
176
|
+
- Her adım: read_file → apply_patch → run_command (test)
|
|
177
|
+
- Test başarısızsa: hata analiz → yeni patch → tekrar test
|
|
178
|
+
- Döngü sonu: verification_command otomatik çalıştırılır
|
|
179
|
+
4. Tüm çıktılar TUI transcript'e yazılır
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Güvenlik:**
|
|
183
|
+
- Yalnızca proje dizini içindeki dosyalara erişim
|
|
184
|
+
- İzinli komutlar: `pytest`, `npm test`, `mvn test`, `go test`, `cd && ...` vb.
|
|
185
|
+
- Her `apply_patch` `.{timestamp}.bak` yedek oluşturur
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Endpoint Türleri
|
|
190
|
+
|
|
191
|
+
| Tür | Açıklama |
|
|
192
|
+
|-----|----------|
|
|
193
|
+
| **Kurumsal** | Endpoint elle girilir, `verifySsl`/`caBundlePath` desteklenir |
|
|
194
|
+
| **Global (GLM z.ai)** | `https://api.z.ai/api/coding/paas/v4` sabit, sadece API key istenir |
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Yapılandırma
|
|
199
|
+
|
|
200
|
+
`~/.qai/config.json`:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"provider": "external",
|
|
205
|
+
"baseUrl": "https://api.z.ai/api/coding/paas/v4",
|
|
206
|
+
"apiKey": "<Z_AI_API_KEY>",
|
|
207
|
+
"model": "glm-5.2",
|
|
208
|
+
"trelloKey": "<TRELLO_APP_KEY>",
|
|
209
|
+
"trelloToken": "<TRELLO_USER_TOKEN>",
|
|
210
|
+
"trelloBoardId": "<BOARD_ID>",
|
|
211
|
+
"trelloBoardName": "My Board",
|
|
212
|
+
"jiraBaseUrl": "https://jira.sirket.com",
|
|
213
|
+
"jiraToken": "<JIRA_PAT>"
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Ortam Değişkenleri
|
|
220
|
+
|
|
221
|
+
| Değişken | Açıklama |
|
|
222
|
+
|----------|----------|
|
|
223
|
+
| `QAI_CONFIG_DIR` | Yapılandırma dizini (varsayılan: `~/.qai`) |
|
|
224
|
+
| `QAI_NO_TUI` | `1` → TUI devre dışı, klasik readline modu |
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Geliştirme
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
npm test # Vitest birim testleri (96 test)
|
|
232
|
+
npm run typecheck # TypeScript tip kontrolü
|
|
233
|
+
npm run build # dist/ çıktısı (tsup, ESM)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Proje yapısı:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
src/
|
|
240
|
+
├── index.ts # Giriş noktası
|
|
241
|
+
├── repl.ts # Ana döngü ve başlangıç
|
|
242
|
+
├── tui.ts # Tam ekran TUI (~1250 satır) — logo decode animasyonu
|
|
243
|
+
├── session-picker.ts # Ok tuşlu oturum seçici
|
|
244
|
+
├── sessions.ts # Oturum kayıt/yükleme sistemi
|
|
245
|
+
├── history.ts # Geriye dönük uyumluluk
|
|
246
|
+
├── commands.ts # Slash komutları + agent fonksiyonları + ekstra bağlam
|
|
247
|
+
├── agent-tools.ts # list_files, read_file, apply_patch, run_command
|
|
248
|
+
├── agent-loop.ts # Execute agent döngüsü, self-correction
|
|
249
|
+
├── agent-plan.ts # Write-plan: araştırma, özet, JSON plan
|
|
250
|
+
├── rich-format.ts # Terminal rich formatting
|
|
251
|
+
├── api.ts # OpenAI uyumlu streaming + retry
|
|
252
|
+
├── markdown.ts # Markdown→ANSI renderer + syntax highlighting
|
|
253
|
+
├── ui.ts # Terminal yardımcıları, renkler, animasyon, banner, logo decode, promptExtraContext
|
|
254
|
+
├── config.ts # Yapılandırma okuma/yazma
|
|
255
|
+
├── providers.ts # Endpoint preset sistemi
|
|
256
|
+
├── jira.ts # Jira REST API istemcisi
|
|
257
|
+
├── trello.ts # Trello API + kart/pano seçici
|
|
258
|
+
├── context.ts # Proje dosyası tarayıcı
|
|
259
|
+
└── plan.ts # Jira geliştirme planı üretici
|
|
260
|
+
|
|
261
|
+
scripts/
|
|
262
|
+
└── png-to-blocks.mjs # PNG → terminal half-block karakter dönüştürücü
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Lisans
|
|
268
|
+
|
|
269
|
+
MIT
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
LASTGEN_CONTEXT_FILE,
|
|
4
|
+
generateLastgenContext,
|
|
5
|
+
hasLastgenContext,
|
|
6
|
+
lastgenContextPath,
|
|
7
|
+
readLastgenContext
|
|
8
|
+
} from "./chunk-UV67GGHZ.js";
|
|
9
|
+
export {
|
|
10
|
+
LASTGEN_CONTEXT_FILE,
|
|
11
|
+
generateLastgenContext,
|
|
12
|
+
hasLastgenContext,
|
|
13
|
+
lastgenContextPath,
|
|
14
|
+
readLastgenContext
|
|
15
|
+
};
|