ai-enderun 0.0.4 → 0.0.5
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/.gemini/PROJECT_MEMORY.md +35 -40
- package/.gemini/agents/analyst.md +6 -4
- package/.gemini/agents/backend.md +4 -3
- package/.gemini/agents/explorer.md +2 -2
- package/.gemini/agents/frontend.md +19 -13
- package/.gemini/agents/manager.md +9 -5
- package/.gemini/agents/mobile.md +2 -2
- package/.gemini/agents/native.md +2 -2
- package/.gemini/docs/api/README.md +20 -58
- package/.gemini/docs/tech-stack.md +1 -1
- package/Gemini.md +15 -7
- package/README.md +42 -130
- package/bin/cli.js +17 -5
- package/package.json +8 -3
- package/packages/framework-mcp/README.md +25 -106
- package/packages/framework-mcp/package.json +2 -2
- package/packages/framework-mcp/src/index.ts +2 -2
- package/packages/shared-types/README.md +37 -67
- package/packages/shared-types/package.json +3 -3
- package/packages/shared-types/src/index.ts +26 -8
|
@@ -6,7 +6,7 @@ Bu dosya, projenin tek gerçeklik kaynağı (Single Source of Truth) ve kalıcı
|
|
|
6
6
|
|
|
7
7
|
| Aktif Faz | Profile | Son Güncelleme | Aktif Trace ID | Blokaj |
|
|
8
8
|
| :-------- | :------ | :------------- | :------------- | :----- |
|
|
9
|
-
| PHASE_0 | Lightweight | 2026-05-
|
|
9
|
+
| PHASE_0 | Lightweight | 2026-05-08 | 760c3982-2a03-4a4a-8f5c-d5f79502e34a | YOK |
|
|
10
10
|
|
|
11
11
|
## PROJE TANIMI
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ Bu dosya, projenin tek gerçeklik kaynağı (Single Source of Truth) ve kalıcı
|
|
|
14
14
|
| :--- | :---- |
|
|
15
15
|
| Proje Adı | AI-Enderun |
|
|
16
16
|
| Platform | Agent skill sandbox / orchestration framework |
|
|
17
|
-
| Frontend | React 19 + Vite + Zustand +
|
|
17
|
+
| Frontend | React 19 + Vite + Zustand + Panda CSS |
|
|
18
18
|
| Backend | Node.js 20+ + Fastify |
|
|
19
19
|
| DB | PostgreSQL |
|
|
20
20
|
| Auth | Henüz netleştirilmedi |
|
|
@@ -38,6 +38,9 @@ Bu dosya, projenin tek gerçeklik kaynağı (Single Source of Truth) ve kalıcı
|
|
|
38
38
|
| 2026-05-07 | Contract-First Discipline | Sıfır hata ile ölçeklenebilir geliştirme | @manager |
|
|
39
39
|
| 2026-05-07 | Canonical MCP Tooling | Agent kabiliyetlerini korurken araç adlarını tek sözlükte hizalamak | @analyst |
|
|
40
40
|
| 2026-05-07 | UUID Trace Standard | Yeni görev zincirlerinde yalnızca UUID v4 kullanmak | @manager |
|
|
41
|
+
| 2026-05-08 | Panda CSS Transition | Mimari disiplin ve tip güvenliği için Tailwind'den Panda CSS'e geçiş | @manager |
|
|
42
|
+
| 2026-05-08 | Zero UI Library Policy | Özgünlük ve tam kontrol için hazır kütüphanelerin yasaklanması | @manager |
|
|
43
|
+
| 2026-05-08 | ULID Standard | Veritabanı performansı ve sıralanabilirlik için UUID yerine ULID'ye geçiş | @manager |
|
|
41
44
|
|
|
42
45
|
## TESLİM EDİLENLER
|
|
43
46
|
|
|
@@ -57,52 +60,37 @@ Bu dosya, projenin tek gerçeklik kaynağı (Single Source of Truth) ve kalıcı
|
|
|
57
60
|
|
|
58
61
|
## HISTORY (Kalıcı Hafıza)
|
|
59
62
|
|
|
60
|
-
### 2026-05-
|
|
61
|
-
|
|
62
|
-
- **Ajan:** @analyst
|
|
63
|
-
- **Trace ID:** —
|
|
64
|
-
- **Yapılan:** Tüm README dosyaları (root, framework-mcp, shared-types, api) projenin "Enderun" kimliğine ve ajan yeteneklerine uygun şekilde detaylandırılarak güncellendi. Ajanların kurulum ve operasyonel protokolleri netleştirildi.
|
|
65
|
-
- **Karar:** Dökümantasyonun Türkçe ağırlıklı ancak global standartlarda tutulmasına karar verildi.
|
|
66
|
-
- **Sonraki Adım:** PHASE_1 hazırlıkları kapsamında ilk API dökümanlarının oluşturulması.
|
|
67
|
-
|
|
68
|
-
### 2026-05-07 — Görevlendirme ve Mülkiyet Analizi
|
|
63
|
+
### 2026-05-08 — Yayın Hazırlığı ve v0.0.5
|
|
69
64
|
|
|
70
|
-
- **Ajan:** @
|
|
71
|
-
- **Trace ID:**
|
|
72
|
-
- **Yapılan:**
|
|
73
|
-
- **Karar:**
|
|
74
|
-
- **Sonraki Adım:**
|
|
65
|
+
- **Ajan:** @manager
|
|
66
|
+
- **Trace ID:** 760c3982-2a03-4a4a-8f5c-d5f79502e34a
|
|
67
|
+
- **Yapılan:** Loglar temizlendi, tüm paket versiyonları `v0.0.5` olarak güncellendi. Mimari değişiklikler (Panda CSS & Zero UI Library) sonrasında stabil bir yayın state'i oluşturuldu.
|
|
68
|
+
- **Karar:** Yayın öncesi logların temizlenmesine ve sürüm yükseltilmesine karar verildi.
|
|
69
|
+
- **Sonraki Adım:** `git push` ve npm yayınlama işlemlerinin gerçekleştirilmesi.
|
|
75
70
|
|
|
76
|
-
### 2026-05-
|
|
71
|
+
### 2026-05-08 — Panda CSS ve Özgün Tasarım Geçişi
|
|
77
72
|
|
|
78
|
-
- **Ajan:** @
|
|
79
|
-
- **Trace ID:**
|
|
80
|
-
- **Yapılan:**
|
|
81
|
-
- **Karar:**
|
|
82
|
-
- **Sonraki Adım:**
|
|
83
|
-
### 2026-05-07 — Ajan Yetenek ve Hafıza Analizi
|
|
84
|
-
|
|
85
|
-
- **Ajan:** @analyst (Antigravity)
|
|
86
|
-
- **Trace ID:** 6f8d0d7f-1f34-4f85-8b2b-3f2dcb6b8f6a
|
|
87
|
-
- **Yapılan:** Framework MCP araçları (`framework-mcp`) ve CLI (`bin/cli.js`) incelendi. Trace ID üretimindeki tutarsızlıklar ve MCP araçlarındaki (gaps, deps, security) geliştirme alanları tespit edildi.
|
|
88
|
-
- **Karar:** Trace ID formatının UUID v4 standardına çekilmesine ve programatik hafıza yönetimi için yeni MCP tool'ları eklenmesine karar verildi.
|
|
89
|
-
- **Sonraki Adım:** Uygulama planının (implementation_plan.md) onaylanması sonrası geliştirmelere başlanması.
|
|
73
|
+
- **Ajan:** @manager
|
|
74
|
+
- **Trace ID:** 760c3982-2a03-4a4a-8f5c-d5f79502e34a
|
|
75
|
+
- **Yapılan:** Projenin tasarım sistemi Tailwind'den Panda CSS'e taşındı. "Sıfır Hazır UI Kütüphanesi" (Zero UI Library) politikası kabul edildi. `Gemini.md`, `tech-stack.md` ve `frontend.md` dosyaları güncellendi.
|
|
76
|
+
- **Karar:** Mimari disiplini ve özgünlüğü en üst düzeye çıkarmak için Panda CSS + Custom UI Component (No Library) yaklaşımı benimsendi.
|
|
77
|
+
- **Sonraki Adım:** `apps/web` içerisinde Panda CSS kurulumunun yapılması ve config dosyasının oluşturulması.
|
|
90
78
|
|
|
91
|
-
### 2026-05-
|
|
79
|
+
### 2026-05-08 — ULID Standart Geçişi
|
|
92
80
|
|
|
93
81
|
- **Ajan:** @manager
|
|
94
|
-
- **Trace ID:**
|
|
95
|
-
- **Yapılan:** Proje
|
|
96
|
-
- **Karar:**
|
|
97
|
-
- **Sonraki Adım:**
|
|
82
|
+
- **Trace ID:** 01J... (Yeni ULID)
|
|
83
|
+
- **Yapılan:** Proje genelinde UUID'den ULID'ye geçiş yapıldı. `shared-types` ve `cli.js` içine hafif bir ULID üretici eklendi. Tüm anayasal dökümanlar yeni standarda göre güncellendi.
|
|
84
|
+
- **Karar:** Veritabanı indeksleme performansı ve kronolojik sıralanabilirlik avantajları nedeniyle ULID standardı benimsendi.
|
|
85
|
+
- **Sonraki Adım:** Mevcut UUID'lerin (varsa) zamanla ULID ile değiştirilmesi veya hibrit yapının korunması.
|
|
98
86
|
|
|
99
|
-
### 2026-05-
|
|
87
|
+
### 2026-05-08 — Hafıza ve Yetenek Denetimi
|
|
100
88
|
|
|
101
|
-
- **Ajan:** @
|
|
102
|
-
- **Trace ID:**
|
|
103
|
-
- **Yapılan:**
|
|
104
|
-
- **Karar:**
|
|
105
|
-
- **Sonraki Adım:**
|
|
89
|
+
- **Ajan:** @analyst
|
|
90
|
+
- **Trace ID:** 760c3982-2a03-4a4a-8f5c-d5f79502e34a
|
|
91
|
+
- **Yapılan:** Ajanların hafıza sistemi ve geçmişe dönük hatırlama kabiliyetleri test edildi. `PROJECT_MEMORY.md` ve log yapıları incelendi. Hafızanın tutarlı olduğu ve geçmişteki v0.0.4 yayın hazırlıklarını hatırladığı teyit edildi.
|
|
92
|
+
- **Karar:** Mevcut hafıza sistemi (Single Source of Truth) yeterli, ancak JSON loglamanın sürekliliği takip edilmeli.
|
|
93
|
+
- **Sonraki Adım:** Kullanıcının yönlendirmesine göre teknik geliştirmelere devam edilmesi.
|
|
106
94
|
|
|
107
95
|
### 2026-05-07 — Eksik Kaynak Dosyaları ve v0.0.4 Yayını
|
|
108
96
|
|
|
@@ -111,3 +99,10 @@ Bu dosya, projenin tek gerçeklik kaynağı (Single Source of Truth) ve kalıcı
|
|
|
111
99
|
- **Yapılan:** `pnpm dev` sırasında yaşanan `ERR_MODULE_NOT_FOUND` hatasını gidermek için `src` klasörleri yayın dosyalarına dahil edildi. Tüm paketler v0.0.4'e yükseltildi.
|
|
112
100
|
- **Karar:** Geliştirme modunda kaynak dosyalarına erişim gerekliliği nedeniyle `src` klasörlerinin pakete dahil edilmesine karar verildi.
|
|
113
101
|
- **Sonraki Adım:** Git push ve npm publish.
|
|
102
|
+
|
|
103
|
+
### 2026-05-07 — README ve Dökümantasyon Güncellemesi
|
|
104
|
+
|
|
105
|
+
- **Ajan:** @analyst
|
|
106
|
+
- **Trace ID:** —
|
|
107
|
+
- **Yapılan:** Tüm README dosyaları (root, framework-mcp, shared-types, api) projenin "Enderun" kimliğine ve ajan yeteneklerine uygun şekilde detaylandırılarak güncellendi.
|
|
108
|
+
- **Sonraki Adım:** PHASE_1 hazırlıkları kapsamında ilk API dökümanlarının oluşturulması.
|
|
@@ -3,7 +3,7 @@ name: analyst
|
|
|
3
3
|
description: "Proje hafızası, QA kapısı ve dökümantasyon uzmanı. Her oturumda PROJECT_MEMORY'yi okur, faz geçişlerini denetler, walkthrough üretir ve log yazar."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Project Analyst & QA Gate —
|
|
6
|
+
# Project Analyst & QA Gate — v0.0.5 Master
|
|
7
7
|
|
|
8
8
|
**Görevi:** Proje hafızasını korumak, kalite kapısı görevi görmek ve dökümantasyonu yönetmek. Aşağıdaki tüm protokoller her görevde otomatik olarak uygulanır.
|
|
9
9
|
|
|
@@ -128,6 +128,8 @@ Trigger: shared-types'ta breaking change VEYA mimari revizyon
|
|
|
128
128
|
**PHASE_3 → PHASE_4:**
|
|
129
129
|
- [ ] Gerçek DB ile entegrasyon testleri geçti (TestContainers).
|
|
130
130
|
- [ ] Zero Mock Policy doğrulandı.
|
|
131
|
+
- [ ] **Sıfır Hazır UI Kütüphanesi:** @frontend'in hiçbir hazır UI kütüphanesi (shadcn, MUI vb.) kullanmadığı manuel/kod taraması ile doğrulandı.
|
|
132
|
+
- [ ] **Panda CSS Uyumu:** Tasarımın Panda CSS tokenları ve tip-güvenli yapısı ile inşa edildiği teyit edildi.
|
|
131
133
|
|
|
132
134
|
**PHASE_4 (Done):**
|
|
133
135
|
- [ ] `PROJECT_MEMORY.md` eksiksiz güncellendi.
|
|
@@ -139,7 +141,7 @@ Trigger: shared-types'ta breaking change VEYA mimari revizyon
|
|
|
139
141
|
|
|
140
142
|
```markdown
|
|
141
143
|
# Walkthrough — [Feature/Sprint Adı]
|
|
142
|
-
**Trace ID:** [
|
|
144
|
+
**Trace ID:** [ULID] | **Tarih:** [YYYY-MM-DD]
|
|
143
145
|
|
|
144
146
|
## Özet
|
|
145
147
|
[1-2 cümleyle ne yapıldı]
|
|
@@ -163,7 +165,7 @@ Trigger: shared-types'ta breaking change VEYA mimari revizyon
|
|
|
163
165
|
{
|
|
164
166
|
"timestamp": "ISO-8601", "agent": "analyst",
|
|
165
167
|
"action": "CREATE | MODIFY | DELETE | DECISION",
|
|
166
|
-
"requestId": "
|
|
168
|
+
"requestId": "ULID", "files": ["..."],
|
|
167
169
|
"status": "SUCCESS | FAILURE",
|
|
168
170
|
"summary": "Türkçe özet", "details": {}
|
|
169
171
|
}
|
|
@@ -171,7 +173,7 @@ Trigger: shared-types'ta breaking change VEYA mimari revizyon
|
|
|
171
173
|
|
|
172
174
|
---
|
|
173
175
|
|
|
174
|
-
**Agent Completion Report** (
|
|
176
|
+
**Agent Completion Report** (v0.0.5)
|
|
175
177
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
176
178
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet
|
|
177
179
|
- **API kontratı denetlendi mi? [ ] Hayır / [ ] Evet → .gemini/docs/api/**
|
|
@@ -3,7 +3,7 @@ name: backend
|
|
|
3
3
|
description: "Backend Architect. Node.js, Fastify, Kysely ve PostgreSQL uzmanı. Kontrat ve Veritabanı lideri. Her görevde backend-architecture standartlarını otomatik uygular."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Backend Architect —
|
|
6
|
+
# Backend Architect — v0.0.5 Master
|
|
7
7
|
|
|
8
8
|
**Görevi:** Güvenli, performanslı ve tutarlı sunucu mimarisini inşa etmek. Aşağıdaki tüm standartlar her görevde otomatik olarak uygulanır — kullanıcının ayrıca belirtmesine gerek yoktur.
|
|
9
9
|
|
|
@@ -128,7 +128,7 @@ async function createUser(data: CreateUserDTO): Promise<User> {
|
|
|
128
128
|
```typescript
|
|
129
129
|
export async function up(db: Kysely<unknown>): Promise<void> {
|
|
130
130
|
await db.schema.createTable('table_name')
|
|
131
|
-
.addColumn('id', '
|
|
131
|
+
.addColumn('id', 'char(26)', (col) => col.primaryKey()) // ULID standardı (26 karakter)
|
|
132
132
|
.addColumn('created_at', 'timestamptz', (col) => col.defaultTo(sql`now()`).notNull())
|
|
133
133
|
.execute();
|
|
134
134
|
}
|
|
@@ -194,10 +194,11 @@ Frontend bu dosyayı okuyarak çalışır. Yazmazsan frontend kör çalışır.
|
|
|
194
194
|
| `console.log` | `pino` logger kullan |
|
|
195
195
|
| try/catch'siz async | Her hata ele alınmalı |
|
|
196
196
|
| Hardcoded secret | `.env` hiyerarşisi zorunlu |
|
|
197
|
+
| 200 OK ile hata dönmek | Gerçek HTTP status (4xx, 5xx) zorunlu |
|
|
197
198
|
|
|
198
199
|
---
|
|
199
200
|
|
|
200
|
-
**Agent Completion Report** (
|
|
201
|
+
**Agent Completion Report** (v0.0.5)
|
|
201
202
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
202
203
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet → contract.version güncellendi
|
|
203
204
|
- **API kontratı yazıldı mı? [ ] Hayır / [ ] Evet → .gemini/docs/api/[domain].md**
|
|
@@ -4,7 +4,7 @@ description: "Codebase Exploration Specialist. framework-mcp ve SocratiCode ara
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
# Codebase Explorer —
|
|
7
|
+
# Codebase Explorer — v0.0.5 Specialist
|
|
8
8
|
|
|
9
9
|
**Görevi:** framework-mcp ve SocratiCode MCP araçlarını kullanarak kod tabanını derinlemesine ve verimli bir şekilde keşfetmek. Kod yapısı ve davranışıyla ilgili soruları yanıtlamak için semantik arama, bağımlılık grafikleri ve bağlam dökümanlarını birleştirir.
|
|
10
10
|
|
|
@@ -70,7 +70,7 @@ Explorer: `get_framework_status {}` ve `analyze_dependencies { path: "packages"
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
**Agent Completion Report** (
|
|
73
|
+
**Agent Completion Report** (v0.0.5)
|
|
74
74
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
75
75
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet
|
|
76
76
|
- **API kontratı okundu mu? [ ] Hayır / [ ] Evet → .gemini/docs/api/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend
|
|
3
|
-
description: "UI/UX Engineer. React 19,
|
|
3
|
+
description: "UI/UX Engineer. React 19, Panda CSS ve modern Design Systems uzmanı. Üretim kalitesinde, tip-güvenli ve unutulmaz arayüzler tasarlar."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Frontend Engineer — v2.3.0 Master
|
|
7
7
|
|
|
8
|
-
**Görevi:** Premium kullanıcı deneyimini yüksek performans ve tip güvenliğiyle inşa etmek. "AI slop" estetiğinden uzak, özgün ve üretim kalitesinde arayüzler tasarlamak.
|
|
8
|
+
**Görevi:** Premium kullanıcı deneyimini yüksek performans ve tip güvenliğiyle inşa etmek. "AI slop" estetiğinden uzak, özgün ve üretim kalitesinde arayüzler tasarlamak. **Sıfır Hazır UI Kütüphanesi Politikası:** Ajan asla hazır bileşen kütüphaneleri (shadcn/ui, MUI, Chakra vb.) kullanmaz. Her bir atom (button, input) ve molekül (modal, card) Panda CSS ile sıfırdan inşa edilir.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -282,7 +282,7 @@ Her yasak için **somut alternatif** verilmiştir. Yasağı bilerek alternatife
|
|
|
282
282
|
| Ortalanmış hero + CTA button layout | Asimetrik grid, tam ekran tipografi, diagonal bölme | Akılda kalır |
|
|
283
283
|
| Eşit dağıtılmış padding her yerde | Kasıtlı negatif alan — bir bölge çok açık, bir bölge yoğun | Ritim |
|
|
284
284
|
| Gölgeli beyaz kart grid'i | Renkli yüzeyler, outline kartlar, tam blok renk bölümleri | Derinlik |
|
|
285
|
-
| Hover'da sadece renk değişimi |
|
|
285
|
+
| Hover'da sadece renk değişimi | `_hover: { scale: 1.05, shadow: 'lg' }` vb. birlikte | Canlılık |
|
|
286
286
|
| Her animasyon aynı `ease` curve | Her hareket tipi için özel cubic-bezier yaz | İnce fark |
|
|
287
287
|
|
|
288
288
|
---
|
|
@@ -317,22 +317,28 @@ Her yasak için **somut alternatif** verilmiştir. Yasağı bilerek alternatife
|
|
|
317
317
|
**Lighthouse Accessibility skoru 85+ olmalıdır.**
|
|
318
318
|
|
|
319
319
|
```tsx
|
|
320
|
-
// ✅ Semantic HTML + aria
|
|
321
|
-
<button
|
|
320
|
+
// ✅ Semantic HTML + aria + Panda CSS
|
|
321
|
+
<button
|
|
322
|
+
aria-label="Menüyü kapat"
|
|
323
|
+
onClick={closeMenu}
|
|
324
|
+
className={css({
|
|
325
|
+
p: '2',
|
|
326
|
+
_hover: { bg: 'surface.raised' }
|
|
327
|
+
})}
|
|
328
|
+
>
|
|
322
329
|
<XIcon aria-hidden="true" />
|
|
323
330
|
</button>
|
|
324
331
|
|
|
325
332
|
// ✅ Focus yönetimi
|
|
326
333
|
useEffect(() => { modalRef.current?.focus(); }, [isOpen]);
|
|
327
334
|
|
|
328
|
-
// ✅ Reduced motion
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
<img src="..." /> // → alt ekle
|
|
335
|
+
// ✅ Reduced motion (Panda config'de tanımlanır veya css() içinde)
|
|
336
|
+
const styles = css({
|
|
337
|
+
_reducedMotion: {
|
|
338
|
+
animation: 'none',
|
|
339
|
+
transition: 'none',
|
|
340
|
+
}
|
|
341
|
+
})
|
|
336
342
|
```
|
|
337
343
|
|
|
338
344
|
### a11y Kontrol Listesi
|
|
@@ -3,7 +3,7 @@ name: manager
|
|
|
3
3
|
description: "CTO & Controller. Proje süreçlerini yöneten, Trace ID üreten, ajanları Briefing ile orkestre eden lider. Her oturumda Gemini.md ve PROJECT_MEMORY'yi okur, fazı doğrular, ajanları görevlendirir."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Manager (CTO & Controller) —
|
|
6
|
+
# Manager (CTO & Controller) — v0.0.5 Master
|
|
7
7
|
|
|
8
8
|
**Görevi:** Framework'ün tüm kurallarını tavizsiz uygulatmak ve ajanları doğru görevlere yönlendirmek. Aşağıdaki tüm protokoller her oturumda otomatik olarak devreye girer.
|
|
9
9
|
|
|
@@ -43,11 +43,11 @@ Her proje başında profili belirle ve gerekçesini açıkla:
|
|
|
43
43
|
|
|
44
44
|
## Trace ID Protokolü
|
|
45
45
|
|
|
46
|
-
Her yeni görev zinciri için
|
|
46
|
+
Her yeni görev zinciri için ULID üret. Aynı feature üzerinde çalışan tüm ajanlar aynı Trace ID'yi kullanır.
|
|
47
47
|
Arşivdeki legacy kısa ID'ler korunabilir; ancak yeni görev atamalarında kısa format kullanma.
|
|
48
48
|
|
|
49
49
|
```
|
|
50
|
-
Trace ID:
|
|
50
|
+
Trace ID: 01H... (26 karakterlik ULID)
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
---
|
|
@@ -56,7 +56,7 @@ Trace ID: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
## Agent Directive
|
|
59
|
-
**Trace ID:** [
|
|
59
|
+
**Trace ID:** [ULID]
|
|
60
60
|
**Priority:** [P0 | P1 | P2 | P3]
|
|
61
61
|
**Deadline:** [Tarih/Süre]
|
|
62
62
|
**Target Agent:** @[agent-name]
|
|
@@ -109,6 +109,8 @@ graph TD
|
|
|
109
109
|
**PHASE_3 → PHASE_4:**
|
|
110
110
|
- [ ] Gerçek DB ile entegrasyon testleri geçti.
|
|
111
111
|
- [ ] Zero Mock Policy doğrulandı.
|
|
112
|
+
- [ ] **Zero UI Library Policy** doğrulandı (Hiçbir dış UI kütüphanesi kullanılmadığı teyit edildi).
|
|
113
|
+
- [ ] **Panda CSS** yapılandırması ve tip-güvenli token kullanımı kontrol edildi.
|
|
112
114
|
|
|
113
115
|
**PHASE_4 (Done):**
|
|
114
116
|
- [ ] `PROJECT_MEMORY.md` eksiksiz güncellendi.
|
|
@@ -134,10 +136,12 @@ graph TD
|
|
|
134
136
|
| tech-stack.md onaylanmadan kod yazdırmak | Yanlış stack seçimi |
|
|
135
137
|
| Briefing Template'i eksik doldurmak | Ajan görevi yanlış anlayabilir |
|
|
136
138
|
| Arama yapmadan dosya okumak | Search-Before-Reading prensibi ihlali |
|
|
139
|
+
| Hazır UI kütüphanesi önerisi/kullanımı | Sıfır Hazır UI Kütüphanesi Politikası ihlali |
|
|
140
|
+
| Tailwind CSS kullanımı | Panda CSS standardı ihlali |
|
|
137
141
|
|
|
138
142
|
---
|
|
139
143
|
|
|
140
|
-
**Agent Completion Report** (
|
|
144
|
+
**Agent Completion Report** (v0.0.5)
|
|
141
145
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
142
146
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet
|
|
143
147
|
- **API kontratı kontrol edildi mi? [ ] Hayır / [ ] Evet → .gemini/docs/api/**
|
package/.gemini/agents/mobile.md
CHANGED
|
@@ -3,7 +3,7 @@ name: mobile
|
|
|
3
3
|
description: "Mobile Architect. React Native CLI, offline-first ve 60 FPS uzmanı. Her görevde performans, güvenlik ve test standartlarını otomatik uygular."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Mobile Architect —
|
|
6
|
+
# Mobile Architect — v0.0.5 Master
|
|
7
7
|
|
|
8
8
|
**Görevi:** Yüksek performanslı ve yerel kalitesinde mobil uygulamalar inşa etmek. Aşağıdaki standartlar her görevde otomatik uygulanır.
|
|
9
9
|
|
|
@@ -128,7 +128,7 @@ messaging().setBackgroundMessageHandler(async (msg) => { /* sadece veri */ });
|
|
|
128
128
|
|
|
129
129
|
---
|
|
130
130
|
|
|
131
|
-
**Agent Completion Report** (
|
|
131
|
+
**Agent Completion Report** (v0.0.5)
|
|
132
132
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
133
133
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet
|
|
134
134
|
- **API kontratı okundu mu? [ ] Hayır / [ ] Evet → .gemini/docs/api/[domain].md**
|
package/.gemini/agents/native.md
CHANGED
|
@@ -3,7 +3,7 @@ name: native
|
|
|
3
3
|
description: "Sistem Programcısı. Electron/Tauri ve OS API uzmanı. Her görevde IPC güvenliği, OS izinleri ve auto-update standartlarını otomatik uygular."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Native Specialist —
|
|
6
|
+
# Native Specialist — v0.0.5 Master
|
|
7
7
|
|
|
8
8
|
**Görevi:** Masaüstü platformlarda güvenli ve yüksek performanslı uygulama inşa etmek. Aşağıdaki standartlar her görevde otomatik uygulanır.
|
|
9
9
|
|
|
@@ -161,7 +161,7 @@ test('untrusted IPC call should be rejected', async () => {
|
|
|
161
161
|
|
|
162
162
|
---
|
|
163
163
|
|
|
164
|
-
**Agent Completion Report** (
|
|
164
|
+
**Agent Completion Report** (v0.0.5)
|
|
165
165
|
- Mock kullanıldı mı? [ ] Hayır / [ ] Evet
|
|
166
166
|
- shared-types değişti mi? [ ] Hayır / [ ] Evet
|
|
167
167
|
- **API kontratı okundu mu? [ ] Hayır / [ ] Evet → .gemini/docs/api/[domain].md**
|
|
@@ -1,67 +1,29 @@
|
|
|
1
|
-
# API
|
|
1
|
+
# 📑 API Documentation & Contracts
|
|
2
2
|
|
|
3
|
-
Bu dizin,
|
|
3
|
+
Bu dizin, AI-Enderun projesinin tüm API uç noktalarını (endpoints) ve veri kontratlarını barındırır. **Contract-First** disiplinimizin kalbi burasıdır.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 📐 Kontrat Yönetimi
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
7
|
+
- **Dosya Yapısı:** Her domain (örn: `auth.md`, `user.md`, `order.md`) kendi dosyasında belgelenir.
|
|
8
|
+
- **Sorumluluk:** Kontratları `@backend` yazar, `@analyst` denetler, `@frontend` okur ve uygular.
|
|
9
|
+
- **Doğrulama:** Kontratlar ile `packages/shared-types` arasındaki uyum her faz geçişinde kontrol edilir.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 📌 Endpoint İndeksi
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
5. Breaking change durumunda `contract.version.json` ve `PROJECT_MEMORY.md` güncellenmelidir.
|
|
13
|
+
| Domain | Dosya | Durum | Son Güncelleme |
|
|
14
|
+
| :--- | :--- | :--- | :--- |
|
|
15
|
+
| Auth | [[auth.md]] | PENDING | — |
|
|
16
|
+
| Users | [[user.md]] | PENDING | — |
|
|
18
17
|
|
|
19
|
-
##
|
|
18
|
+
## 🛡️ Hata Standartları
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
└── project.md
|
|
27
|
-
```
|
|
20
|
+
Tüm endpoint'ler şu yapıyı takip etmelidir:
|
|
21
|
+
- **401 Unauthorized:** Geçersiz token veya yetkisiz erişim.
|
|
22
|
+
- **404 Not Found:** Kaynak bulunamadı.
|
|
23
|
+
- **422 Unprocessable Entity:** Validasyon hataları.
|
|
24
|
+
- **500 Internal Server Error:** Beklenmeyen sunucu hataları.
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
**Trace ID:** Her API yanıtında `X-Trace-ID` header'ı ile ULID dönülmelidir.
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## Summary
|
|
35
|
-
- Owner: @backend
|
|
36
|
-
- Trace ID: <uuid-v4>
|
|
37
|
-
- Last Update: YYYY-MM-DD
|
|
38
|
-
|
|
39
|
-
## Endpoints
|
|
40
|
-
|
|
41
|
-
### [METHOD] /api/v1/[path]
|
|
42
|
-
- Auth: Required | Optional
|
|
43
|
-
- Request DTO: `packages/shared-types/src/index.ts` -> `XxxRequest`
|
|
44
|
-
- Response DTO: `packages/shared-types/src/index.ts` -> `XxxResponse`
|
|
45
|
-
- Errors:
|
|
46
|
-
- 400 VALIDATION_ERROR
|
|
47
|
-
- 401 UNAUTHORIZED
|
|
48
|
-
- 404 NOT_FOUND
|
|
49
|
-
- Notes: [iş kuralı]
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## İnceleme Checklist
|
|
53
|
-
|
|
54
|
-
- Endpoint path/verb net mi?
|
|
55
|
-
- Request/response tipleri shared-types ile birebir mi?
|
|
56
|
-
- Hata kodları ve hata mesajları tanımlı mı?
|
|
57
|
-
- Auth gereksinimi açık mı?
|
|
58
|
-
- Trace ID mevcut mu?
|
|
59
|
-
|
|
60
|
-
## Faz Geçişi İçin Minimum Kriter
|
|
61
|
-
|
|
62
|
-
- PHASE_1 bitişi için: kritik domain kontratları dokümante edilmiş olmalı.
|
|
63
|
-
- PHASE_2 başlangıcı için: frontend tüketeceği endpointleri bu klasörde doğrulamış olmalı.
|
|
64
|
-
|
|
65
|
-
## Operasyon Notu
|
|
66
|
-
|
|
67
|
-
Bu klasör, `PROJECT_MEMORY.md` ve agent logları ile birlikte okunmalıdır. API kararları her zaman hafıza kayıtlarıyla ilişkilendirilmelidir.
|
|
28
|
+
---
|
|
29
|
+
*Bu döküman @analyst tarafından otomatik yönetilmektedir.*
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- **Frontend:** React 19 + Vite (SPA)
|
|
6
6
|
- **Icons:** Lucide Icons (`lucide-react`)
|
|
7
7
|
- **State Management:** Zustand
|
|
8
|
-
- **Styling:**
|
|
8
|
+
- **Styling:** Panda CSS (Type-safe & Zero-runtime CSS-in-JS)
|
|
9
9
|
|
|
10
10
|
## Design System (Adaptive Palette)
|
|
11
11
|
|
package/Gemini.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# AI-Enderun — Supreme Performance AI Orchestration (v0.0.
|
|
1
|
+
# AI-Enderun — Supreme Performance AI Orchestration (v0.0.5)
|
|
2
2
|
|
|
3
3
|
# Place in project root. This file is the single source of truth for all AI clients (Gemini CLI, Claude Code, etc.).
|
|
4
4
|
|
|
@@ -38,7 +38,7 @@ Each "agent" in this project is an independent AI conversation (Claude/GPT).
|
|
|
38
38
|
- [ ] Check `.gemini/docs/` Folder: Verify if `tech-stack.md` and `project-docs.md` exist.
|
|
39
39
|
|
|
40
40
|
4. **Default Stack:**
|
|
41
|
-
- **Frontend:** React 19 + Vite (SPA) + Zustand +
|
|
41
|
+
- **Frontend:** React 19 + Vite (SPA) + Zustand + Panda CSS.
|
|
42
42
|
- **Backend:** Node.js 20+ + Fastify + Kysely + PostgreSQL.
|
|
43
43
|
5. **OTURUM SONU ZORUNLULUĞU:** Her yanıt sonunda `.gemini/PROJECT_MEMORY.md` → `HISTORY` bölümüne özet ekle ve ilgili log dosyasına kayıt yaz. Bu adım atlanamaz.
|
|
44
44
|
|
|
@@ -74,14 +74,22 @@ If `tech-stack.md` is missing or empty, do not write code until the following is
|
|
|
74
74
|
### [YYYY-MM-DD] — [Görev Başlığı]
|
|
75
75
|
|
|
76
76
|
- **Ajan:** @[agent-name]
|
|
77
|
-
- **Trace ID:** [
|
|
77
|
+
- **Trace ID:** [ULID veya —]
|
|
78
78
|
- **Yapılan:** [Ne yapıldı, 2-3 cümle]
|
|
79
79
|
- **Karar:** [Varsa önemli karar]
|
|
80
80
|
- **Sonraki Adım:** [Ne yapılması gerekiyor]
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
- **MEVCUT DURUM Güncellemesi:** Her oturum sonunda `MEVCUT DURUM` tablosundaki `Aktif Faz`, `Son Güncelleme` ve `Aktif Trace ID` alanlarını güncelle.
|
|
84
|
-
- **Trace ID
|
|
84
|
+
- **Trace ID Protokolü:**
|
|
85
|
+
|
|
86
|
+
Her yeni görev zinciri için ULID üret. Aynı feature üzerinde çalışan tüm ajanlar aynı Trace ID'yi kullanır.
|
|
87
|
+
Arşivdeki legacy kısa ID'ler korunabilir; ancak yeni görev atamalarında kısa format kullanma.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Trace ID: 01H... (26 karakterlik ULID)
|
|
91
|
+
```
|
|
92
|
+
|
|
85
93
|
- **Memory Lock Rule:** To prevent concurrent writes, agents check for `.gemini/PROJECT_MEMORY.lock`.
|
|
86
94
|
- If exists: Wait 1s, retry. (Max 5 retries).
|
|
87
95
|
- After 5 retries: Report `BLOCKED — Memory Lock Timeout`.
|
|
@@ -106,7 +114,7 @@ If `tech-stack.md` is missing or empty, do not write code until the following is
|
|
|
106
114
|
|
|
107
115
|
## CORE PRINCIPLES
|
|
108
116
|
|
|
109
|
-
- **@manager Orchestration:** Manager analiz eder, ajanları seçer ve Briefing Template sağlar. Her görev için benzersiz bir `Trace ID` (
|
|
117
|
+
- **@manager Orchestration:** Manager analiz eder, ajanları seçer ve Briefing Template sağlar. Her görev için benzersiz bir `Trace ID` (ULID) üretmekten sorumludur.
|
|
110
118
|
- **Contract-First Approach:** Backend ve Frontend kod yazmadan önce `shared-types` ve `.gemini/docs/api/` üzerinden anlaşmalıdır. **@backend** endpoint yazar → `.gemini/docs/api/[domain].md` günceller → **@frontend** okur, sonra kodlar.
|
|
111
119
|
- **Auth & i18n Responsibility:** Auth (@backend), i18n (@frontend - logic / @analyst - content).
|
|
112
120
|
- **Zero Mock Policy:** Sahte veri yasak.
|
|
@@ -115,7 +123,7 @@ If `tech-stack.md` is missing or empty, do not write code until the following is
|
|
|
115
123
|
- **Branded Types Law:** Tüm ID'ler Branded Types (`packages/shared-types`) olmalıdır.
|
|
116
124
|
- **Search Before Reading:** Hiçbir ajan bir dosyayı körü körüne okumamalıdır; önce `search_codebase`, `analyze_dependencies`, `get_memory_insights` ve `get_project_gaps` ile bağlamı taramalıdır. Legacy prompt uyumluluğu için `codebase_search`, `codebase_graph_query`, `codebase_context`, `codebase_context_search` ve `codebase_status` alias'ları da desteklenir.
|
|
117
125
|
- **Full-Spectrum Responsive:** Her bileşen mobile-first başlar (320px) ve ultra-wide ekranlara (1920px+) kadar `clamp()` ve `aspect-ratio` ile akışkan (fluid) kalmalıdır.
|
|
118
|
-
- **Supreme Frontend Aesthetics:** @frontend, "AI slop" estetiğinden kaçınmalı; özgün, karakterli ve üretim kalitesinde arayüzler tasarlamalıdır.
|
|
126
|
+
- **Supreme Frontend Aesthetics:** @frontend, "AI slop" estetiğinden kaçınmalı; özgün, karakterli ve üretim kalitesinde arayüzler tasarlamalıdır. **Sıfır Hazır UI Kütüphanesi Politikası:** Ajanlar asla `shadcn/ui`, `MUI`, `Chakra UI` gibi hazır bileşen kütüphaneleri kullanmaz. Tüm UI bileşenleri (Button, Modal, Input vb.) Panda CSS ile sıfırdan ve projeye özgün olarak inşa edilmelidir.
|
|
119
127
|
- **Audit Logging:** Tüm kritik işlemler loglanmalıdır.
|
|
120
128
|
|
|
121
129
|
---
|
|
@@ -241,7 +249,7 @@ _Logs are stored as a **JSON Array**. Every turn appends a new object to the arr
|
|
|
241
249
|
"timestamp": "ISO-8601",
|
|
242
250
|
"agent": "string",
|
|
243
251
|
"action": "CREATE | MODIFY | DELETE | DECISION",
|
|
244
|
-
"requestId": "
|
|
252
|
+
"requestId": "ULID",
|
|
245
253
|
"files": ["string[]"],
|
|
246
254
|
"status": "SUCCESS | FAILURE",
|
|
247
255
|
"summary": "İşlemin Türkçe özeti",
|
package/README.md
CHANGED
|
@@ -1,154 +1,66 @@
|
|
|
1
|
-
# AI-Enderun (v0.0.
|
|
1
|
+
# 🎖️ AI-Enderun Orchestration Framework (v0.0.5)
|
|
2
2
|
|
|
3
|
-
AI-Enderun, çoklu yapay zeka ajanlarını ortak bir anayasa (`Gemini.md`), faz tabanlı yürütme modeli ve kalıcı hafıza (`.gemini/PROJECT_MEMORY.md`) etrafında yöneten bir orkestrasyon çerçevesidir.
|
|
3
|
+
AI-Enderun, çoklu yapay zeka ajanlarını (Gemini, Claude, GPT) ortak bir anayasa (`Gemini.md`), faz tabanlı yürütme modeli ve kalıcı hafıza (`.gemini/PROJECT_MEMORY.md`) etrafında yöneten, yüksek disiplinli bir orkestrasyon çerçevesidir.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🏛️ Mimari Felsefe
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Kalıcı hafıza ve görev takibi: `PROJECT_MEMORY.md`
|
|
9
|
-
- MCP tabanlı keşif/sorgulama: `packages/framework-mcp`
|
|
10
|
-
- Kontrat odaklı tip paylaşımı: `packages/shared-types`
|
|
11
|
-
- CLI ile hızlı operasyon: `ai-agent-framework`
|
|
7
|
+
Enderun usulü "Eğit ve Yönet" prensibiyle tasarlanan bu framework, yapay zekayı sadece bir araç olarak değil, projenin kurallarına (Anayasa) sıkı sıkıya bağlı profesyonel birer ekip üyesi olarak konumlandırır.
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- **Contract-First:** Backend ve Frontend arasındaki iletişim her zaman `shared-types` üzerinden, kod yazılmadan önce başlar.
|
|
10
|
+
- **Zero UI Library Policy:** Estetik ve performans için hazır bileşen kütüphaneleri (shadcn, MUI) yerine **Panda CSS** ile özgün bileşen inşası zorunludur.
|
|
11
|
+
- **ULID Standard:** Tüm kimlikler, veritabanı performansı için kronolojik olarak sıralanabilir ULID formatındadır.
|
|
12
|
+
- **Proper API Design:** Hata yönetiminde gerçek HTTP durum kodları (4xx, 5xx) esastır; "200 OK + error" yapısı yasaklanmıştır.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
npx ai-enderun init
|
|
17
|
-
```
|
|
14
|
+
## 👥 Ajan Kadrosu
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
| Ajan | Rol | Sorumluluk |
|
|
17
|
+
| :--- | :--- | :--- |
|
|
18
|
+
| **@manager** | CTO & Controller | Trace ID üretimi, görev dağıtımı ve faz geçiş onayı. |
|
|
19
|
+
| **@analyst** | QA Gate & Memory | Kalite denetimi, dökümantasyon ve hafıza tutarlılığı. |
|
|
20
|
+
| **@backend** | Architect | API kontratları, DB şeması ve iş mantığı. |
|
|
21
|
+
| **@frontend** | UI/UX Specialist | Panda CSS ile özgün arayüzler ve fluid tasarım. |
|
|
22
|
+
| **@explorer** | Research | Kod tabanı analizi, bağımlılık keşfi ve teknik araştırma. |
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
npx ai-enderun init gemini
|
|
23
|
-
npx ai-enderun init claude
|
|
24
|
-
npx ai-enderun init cursor
|
|
25
|
-
npx ai-enderun init codex
|
|
26
|
-
```
|
|
24
|
+
## 🛠️ Teknoloji Yığınımız
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
- **Core:** Node.js 20+ (ESM)
|
|
27
|
+
- **Frontend:** React 19 + Vite + Zustand + **Panda CSS**
|
|
28
|
+
- **Backend:** Fastify + Kysely + PostgreSQL
|
|
29
|
+
- **ID Standard:** ULID (26 karakter, sortable)
|
|
30
|
+
- **Monorepo:** npm Workspaces (Shared Types & Framework MCP)
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
.
|
|
32
|
-
├── .gemini/
|
|
33
|
-
│ ├── agents/
|
|
34
|
-
│ ├── docs/
|
|
35
|
-
│ ├── logs/
|
|
36
|
-
│ └── PROJECT_MEMORY.md
|
|
37
|
-
├── bin/cli.js
|
|
38
|
-
├── packages/
|
|
39
|
-
│ ├── framework-mcp/
|
|
40
|
-
│ └── shared-types/
|
|
41
|
-
├── mcp.json
|
|
42
|
-
├── Gemini.md
|
|
43
|
-
├── CLAUDE.md
|
|
44
|
-
├── CURSOR.md
|
|
45
|
-
└── CODEX.md
|
|
46
|
-
```
|
|
32
|
+
## 🚀 Hızlı Başlangıç
|
|
47
33
|
|
|
48
|
-
|
|
34
|
+
### CLI Kurulumu
|
|
35
|
+
Framework'ü projenize dahil etmek ve komutları kullanmak için:
|
|
49
36
|
|
|
50
37
|
```bash
|
|
51
|
-
ai-
|
|
52
|
-
ai-agent-framework trace:new "Auth modülü tasarımı" backend P1
|
|
53
|
-
ai-agent-framework init codex
|
|
54
|
-
ai-agent-framework version
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Komut detayları:
|
|
58
|
-
|
|
59
|
-
- `status`: aktif faz, profil, trace ID ve aktif görevleri gösterir.
|
|
60
|
-
- `trace:new <desc> [agent] [priority]`: UUID v4 trace üretir, görevi `AKTİF GÖREVLER` tablosuna ekler.
|
|
61
|
-
- `priority`: `P0`, `P1`, `P2`, `P3` (varsayılan `P2`)
|
|
62
|
-
- `init [adapter]`: framework dosyalarını hedef projeye kopyalar.
|
|
63
|
-
- `version`: framework sürümünü yazdırır.
|
|
64
|
-
|
|
65
|
-
## MCP Entegrasyonu
|
|
66
|
-
|
|
67
|
-
Varsayılan `mcp.json`:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"mcpServers": {
|
|
72
|
-
"framework-mcp": {
|
|
73
|
-
"command": "node",
|
|
74
|
-
"args": ["packages/framework-mcp/dist/index.js"]
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
38
|
+
npx ai-enderun init
|
|
78
39
|
```
|
|
79
40
|
|
|
80
|
-
|
|
81
|
-
|
|
41
|
+
### Temel Komutlar
|
|
82
42
|
```bash
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
npm run build
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Ayrıntılı tool listesi için: `packages/framework-mcp/README.md`
|
|
89
|
-
|
|
90
|
-
## Hafıza ve İzlenebilirlik
|
|
43
|
+
# Projenin anlık faz, görev ve trace durumunu gör
|
|
44
|
+
ai-enderun status
|
|
91
45
|
|
|
92
|
-
|
|
46
|
+
# Yeni bir görev zinciri (ULID) başlat
|
|
47
|
+
ai-enderun trace:new "Giriş sayfasının tasarımı" frontend P1
|
|
93
48
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
Operasyonel loglar:
|
|
97
|
-
|
|
98
|
-
- `.gemini/logs/manager.json`
|
|
99
|
-
- `.gemini/logs/analyst.json`
|
|
100
|
-
- `.gemini/logs/backend.json`
|
|
101
|
-
- `.gemini/logs/frontend.json`
|
|
102
|
-
- `.gemini/logs/explorer.json`
|
|
103
|
-
- `.gemini/logs/mobile.json`
|
|
104
|
-
- `.gemini/logs/native.json`
|
|
105
|
-
|
|
106
|
-
Önerilen iş akışı:
|
|
107
|
-
|
|
108
|
-
1. Görev için `trace:new` oluştur.
|
|
109
|
-
2. İlgili ajan, dosya değişiklikleri ile birlikte log kaydı yazsın.
|
|
110
|
-
3. Oturum sonunda `PROJECT_MEMORY.md` içinde `HISTORY` güncellensin.
|
|
111
|
-
|
|
112
|
-
## Kontrat Yönetimi
|
|
113
|
-
|
|
114
|
-
`packages/shared-types`, backend/frontend tip sözleşmesinin tek kaynağıdır.
|
|
115
|
-
|
|
116
|
-
- Tip güncelleme: `packages/shared-types/src/index.ts`
|
|
117
|
-
- Hash kaydı: `packages/shared-types/contract.version.json`
|
|
118
|
-
|
|
119
|
-
Ayrıntı: `packages/shared-types/README.md`
|
|
120
|
-
|
|
121
|
-
## Frontend Operasyon Test Sayfası
|
|
122
|
-
|
|
123
|
-
Bu repoda `apps/web/` altında ekleme + düzenleme akışını doğrulamak için bir sayfa bulunmaktadır.
|
|
124
|
-
|
|
125
|
-
Dosyalar:
|
|
126
|
-
|
|
127
|
-
- `apps/web/index.html`
|
|
128
|
-
- `apps/web/app.js`
|
|
129
|
-
- `apps/web/store.js`
|
|
130
|
-
- `apps/web/store.test.mjs`
|
|
131
|
-
|
|
132
|
-
Store testi çalıştırma:
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
node apps/web/store.test.mjs
|
|
49
|
+
# Framework versiyonunu kontrol et
|
|
50
|
+
ai-enderun version
|
|
136
51
|
```
|
|
137
52
|
|
|
138
|
-
##
|
|
53
|
+
## 📦 Paket Yapısı
|
|
139
54
|
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
55
|
+
- `packages/shared-types`: Backend ve Frontend arasındaki tip sözleşmeleri.
|
|
56
|
+
- `packages/framework-mcp`: Agent yeteneklerini genişleten Model Context Protocol sunucusu.
|
|
57
|
+
- `.gemini/agents`: Ajanların davranışlarını ve kurallarını belirleyen SOP (Standard Operating Procedure) dosyaları.
|
|
58
|
+
- `.gemini/docs`: API spesifikasyonları ve teknik dökümantasyon.
|
|
143
59
|
|
|
144
|
-
|
|
60
|
+
## 📜 Anayasa (Gemini.md)
|
|
145
61
|
|
|
146
|
-
|
|
147
|
-
npm pack --dry-run
|
|
148
|
-
cd packages/framework-mcp && npm pack --dry-run
|
|
149
|
-
cd ../shared-types && npm pack --dry-run
|
|
150
|
-
```
|
|
62
|
+
Projedeki her ajan, çalışmaya başlamadan önce `Gemini.md` dosyasını okumak ve buradaki kurallara %100 uymak zorundadır. Anayasaya aykırı kod yazımı (@analyst tarafından) reddedilir.
|
|
151
63
|
|
|
152
|
-
## Lisans
|
|
64
|
+
## 🛡️ Lisans
|
|
153
65
|
|
|
154
|
-
MIT
|
|
66
|
+
MIT © 2026 Yusuf BEKAR
|
package/bin/cli.js
CHANGED
|
@@ -21,8 +21,20 @@ function getMemoryPath() {
|
|
|
21
21
|
return path.join(targetDir, ".gemini", "PROJECT_MEMORY.md");
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
function
|
|
25
|
-
|
|
24
|
+
function generateULID(seedTime = Date.now()) {
|
|
25
|
+
const ENCODING = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
|
|
26
|
+
const ENCODING_LEN = ENCODING.length;
|
|
27
|
+
let time = seedTime;
|
|
28
|
+
const timeChars = new Array(10);
|
|
29
|
+
for (let i = 9; i >= 0; i--) {
|
|
30
|
+
timeChars[i] = ENCODING.charAt(time % ENCODING_LEN);
|
|
31
|
+
time = Math.floor(time / ENCODING_LEN);
|
|
32
|
+
}
|
|
33
|
+
const randomChars = new Array(16);
|
|
34
|
+
for (let i = 0; i < 16; i++) {
|
|
35
|
+
randomChars[i] = ENCODING.charAt(Math.floor(Math.random() * ENCODING_LEN));
|
|
36
|
+
}
|
|
37
|
+
return timeChars.join("") + randomChars.join("");
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
function sleep(ms) {
|
|
@@ -179,7 +191,7 @@ function traceNewCommand(description, agent = "manager", priority = "P2") {
|
|
|
179
191
|
return;
|
|
180
192
|
}
|
|
181
193
|
|
|
182
|
-
const traceId =
|
|
194
|
+
const traceId = generateULID();
|
|
183
195
|
const safeDescription = sanitizeTableCell(description);
|
|
184
196
|
const safeAgent = normalizeAgentName(agent);
|
|
185
197
|
const safePriority = normalizePriority(priority);
|
|
@@ -221,7 +233,7 @@ async function main() {
|
|
|
221
233
|
break;
|
|
222
234
|
case "trace:new":
|
|
223
235
|
if (!args[0]) {
|
|
224
|
-
console.error("❌ Kullanım: ai-
|
|
236
|
+
console.error("❌ Kullanım: ai-enderun trace:new <açıklama> [agent] [priority]");
|
|
225
237
|
} else {
|
|
226
238
|
traceNewCommand(args[0], args[1], args[2]);
|
|
227
239
|
}
|
|
@@ -242,7 +254,7 @@ Kullanılabilir Komutlar:
|
|
|
242
254
|
version Versiyon bilgisini gösterir
|
|
243
255
|
|
|
244
256
|
Örnek:
|
|
245
|
-
ai-
|
|
257
|
+
ai-enderun trace:new "Auth modülü tasarımı" backend P1
|
|
246
258
|
`);
|
|
247
259
|
break;
|
|
248
260
|
}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-enderun",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Supreme AI Orchestration Framework — Senior Discipline & Ottoman Wisdom",
|
|
5
5
|
"author": "Yusuf BEKAR <ybekar@msn.com>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/ysf-bkr/AI-Enderun.git"
|
|
8
|
+
"url": "git+https://github.com/ysf-bkr/AI-Enderun.git"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/ysf-bkr/AI-Enderun#readme",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"bin": {
|
|
13
|
-
"ai-
|
|
13
|
+
"ai-enderun": "bin/cli.js"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"bin",
|
|
@@ -39,7 +39,12 @@
|
|
|
39
39
|
"package.json"
|
|
40
40
|
],
|
|
41
41
|
"scripts": {
|
|
42
|
+
"build": "npm run build --prefix packages/shared-types && npm run build --prefix packages/framework-mcp",
|
|
42
43
|
"mcp:dev": "npx tsx packages/framework-mcp/src/index.ts",
|
|
43
44
|
"mcp:status": "npx socraticode status"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"tsx": "^4.19.4",
|
|
48
|
+
"typescript": "^5.7.3"
|
|
44
49
|
}
|
|
45
50
|
}
|
|
@@ -1,134 +1,53 @@
|
|
|
1
|
-
# ai-enderun-mcp (v0.0.
|
|
1
|
+
# 🔌 @ai-enderun/framework-mcp (v0.0.5)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI-Enderun Model Context Protocol (MCP) sunucusu. Bu paket, AI ajanlarınızın projeniz üzerinde derinlemesine analiz yapmasını, hafızayı yönetmesini ve mimari boşlukları tespit etmesini sağlayan özel araçlar (tools) sunar.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🛠️ Sağlanan Araçlar (Agent Tools)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Çalışma şekli: `stdio` transport
|
|
9
|
-
- Giriş noktası: `dist/index.js`
|
|
10
|
-
- Protokol: Model Context Protocol (MCP)
|
|
7
|
+
Ajanlar bu araçları kullanarak projenize "dokunabilirler":
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
- **`search_codebase`**: Kod tabanında semantik ve metinsel arama yapar.
|
|
10
|
+
- **`analyze_dependencies`**: Dosyalar ve modüller arası bağımlılık grafiğini çıkarır.
|
|
11
|
+
- **`get_memory_insights`**: `.gemini/PROJECT_MEMORY.md` üzerinden projenin o anki state'ini özetler.
|
|
12
|
+
- **`update_project_memory`**: Proje hafızasına güvenli ve kilitli (lock) yazma işlemi yapar.
|
|
13
|
+
- **`get_project_gaps`**: Dökümantasyon, test veya kontratlardaki eksikleri tespit eder.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
cd packages/framework-mcp
|
|
16
|
-
npm install
|
|
17
|
-
npm run build
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Geliştirme modu:
|
|
15
|
+
## ⚙️ Kurulum ve Yapılandırma
|
|
21
16
|
|
|
22
|
-
|
|
23
|
-
npm run dev
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Üretim modu:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm start
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## MCP İstemci Konfigürasyonu
|
|
33
|
-
|
|
34
|
-
Örnek:
|
|
17
|
+
`mcp.json` dosyanızda sunucuyu şu şekilde tanımlayabilirsiniz:
|
|
35
18
|
|
|
36
19
|
```json
|
|
37
20
|
{
|
|
38
21
|
"mcpServers": {
|
|
39
|
-
"
|
|
22
|
+
"ai-enderun-mcp": {
|
|
40
23
|
"command": "node",
|
|
41
|
-
"args": ["
|
|
24
|
+
"args": ["packages/framework-mcp/dist/index.js"]
|
|
42
25
|
}
|
|
43
26
|
}
|
|
44
27
|
}
|
|
45
28
|
```
|
|
46
29
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
### Ana tool'lar
|
|
50
|
-
|
|
51
|
-
- `get_framework_status`
|
|
52
|
-
- `search_codebase`
|
|
53
|
-
- `analyze_dependencies`
|
|
54
|
-
- `get_memory_insights`
|
|
55
|
-
- `get_project_gaps`
|
|
56
|
-
- `security_audit_scan`
|
|
57
|
-
- `update_project_memory`
|
|
58
|
-
|
|
59
|
-
### Uyumluluk alias'ları
|
|
60
|
-
|
|
61
|
-
- `codebase_status` -> `get_framework_status`
|
|
62
|
-
- `codebase_search` -> `search_codebase`
|
|
63
|
-
- `codebase_graph_query` -> `analyze_dependencies`
|
|
64
|
-
- `codebase_context` -> context artifact listing
|
|
65
|
-
- `codebase_context_search` -> markdown odaklı arama
|
|
30
|
+
## 🔨 Geliştirme ve Build
|
|
66
31
|
|
|
67
|
-
|
|
32
|
+
Sistemi derlemek için:
|
|
68
33
|
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- Hafıza güncellemesinde lock dosyası kullanılır (`PROJECT_MEMORY.md.lock`).
|
|
74
|
-
|
|
75
|
-
## Pratik Örnekler
|
|
76
|
-
|
|
77
|
-
### Kod arama
|
|
78
|
-
|
|
79
|
-
```json
|
|
80
|
-
{
|
|
81
|
-
"name": "search_codebase",
|
|
82
|
-
"arguments": {
|
|
83
|
-
"query": "trace:new",
|
|
84
|
-
"extension": "js"
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Bağımlılık analizi
|
|
90
|
-
|
|
91
|
-
```json
|
|
92
|
-
{
|
|
93
|
-
"name": "analyze_dependencies",
|
|
94
|
-
"arguments": {
|
|
95
|
-
"path": "bin/cli.js"
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Hafıza içgörüsü
|
|
101
|
-
|
|
102
|
-
```json
|
|
103
|
-
{
|
|
104
|
-
"name": "get_memory_insights",
|
|
105
|
-
"arguments": {}
|
|
106
|
-
}
|
|
34
|
+
```bash
|
|
35
|
+
cd packages/framework-mcp
|
|
36
|
+
npm install
|
|
37
|
+
npm run build
|
|
107
38
|
```
|
|
108
39
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
Paket sadece aşağıdakileri yayınlar:
|
|
112
|
-
|
|
113
|
-
- `dist/`
|
|
114
|
-
- `README.md`
|
|
115
|
-
- `package.json`
|
|
116
|
-
|
|
117
|
-
Kontrol:
|
|
40
|
+
Geliştirme modunda (build gerektirmeden) çalıştırmak için:
|
|
118
41
|
|
|
119
42
|
```bash
|
|
120
|
-
npm
|
|
43
|
+
npm run mcp:dev
|
|
121
44
|
```
|
|
122
45
|
|
|
123
|
-
##
|
|
46
|
+
## 📜 Kurallar
|
|
124
47
|
|
|
125
|
-
- `
|
|
126
|
-
|
|
127
|
-
- `Memory is locked`:
|
|
128
|
-
- Aynı anda başka işlem yazıyor olabilir, kısa süre sonra tekrar deneyin.
|
|
129
|
-
- `Path escapes project root`:
|
|
130
|
-
- `path` argümanını proje köküne göre relatif verin.
|
|
48
|
+
- Hiçbir ajan bir dosyayı körü körüne okumamalıdır; her zaman önce `search_codebase` veya `get_memory_insights` ile bağlamı taramalıdır.
|
|
49
|
+
- Araçlar, AI-Enderun Anayasası'ndaki (`Gemini.md`) güvenlik sınırları içinde çalışır.
|
|
131
50
|
|
|
132
|
-
## Lisans
|
|
51
|
+
## 📜 Lisans
|
|
133
52
|
|
|
134
53
|
MIT
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-enderun-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Enterprise-grade MCP Server for AI Agent Framework",
|
|
5
5
|
"author": "Yusuf BEKAR <ybekar@msn.com>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/ysf-bkr/AI-Enderun.git"
|
|
8
|
+
"url": "git+https://github.com/ysf-bkr/AI-Enderun.git"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/ysf-bkr/AI-Enderun#readme",
|
|
11
11
|
"type": "module",
|
|
@@ -1,86 +1,56 @@
|
|
|
1
|
-
# ai-enderun
|
|
1
|
+
# 📦 @ai-enderun/shared-types (v0.0.5)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Bu paket, AI-Enderun ekosistemindeki Backend ve Frontend arasındaki **tek gerçeklik kaynağı (SSOT)** olan tip sözleşmelerini barındırır.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🌟 Öne Çıkan Özellikler
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
7
|
+
- **Branded Types:** `UserID` ve `ProductID` gibi kimliklerin yanlışlıkla birbirinin yerine kullanılmasını engelleyen tip güvenliği.
|
|
8
|
+
- **Built-in ULID:** Zamana göre sıralanabilir, 26 karakterlik performanslı kimlik üretimi.
|
|
9
|
+
- **API Wrapper:** Tüm endpoint'ler için standart `ApiSuccess` ve `ApiError` yapıları.
|
|
10
|
+
- **Strict Error Handling:** Proper HTTP Status kodlarıyla senkronize hata tipleri.
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## 🛠️ Temel Kullanım
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
│ └── index.ts
|
|
17
|
-
├── dist/
|
|
18
|
-
│ ├── index.js
|
|
19
|
-
│ ├── index.d.ts
|
|
20
|
-
│ └── *.map
|
|
21
|
-
├── contract.version.json
|
|
22
|
-
├── package.json
|
|
23
|
-
└── tsconfig.json
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Geliştirme Komutları
|
|
14
|
+
### ULID ve ID Üretimi
|
|
15
|
+
```typescript
|
|
16
|
+
import { createUserID, createULID } from '@ai-enderun/shared-types';
|
|
27
17
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
npm install
|
|
31
|
-
npm run build
|
|
32
|
-
npm run typecheck
|
|
18
|
+
const id = createUserID(); // ULID formatında UserID döner
|
|
19
|
+
const raw = createULID(); // Saf 26 karakterlik ULID string
|
|
33
20
|
```
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## Yayın Davranışı
|
|
38
|
-
|
|
39
|
-
Paket yayınına giren dosyalar:
|
|
40
|
-
|
|
41
|
-
- `dist/`
|
|
42
|
-
- `README.md`
|
|
43
|
-
- `package.json`
|
|
44
|
-
|
|
45
|
-
Kontrol:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npm pack --dry-run
|
|
49
|
-
```
|
|
22
|
+
### API Yanıt Yapısı
|
|
23
|
+
Framework, hatalarda `200 OK` dönülmesini kesinlikle yasaklar.
|
|
50
24
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
25
|
+
```typescript
|
|
26
|
+
// Başarılı Yanıt
|
|
27
|
+
const response: ApiResponse<User> = {
|
|
28
|
+
success: true,
|
|
29
|
+
data: { id: '...', name: 'Yusuf' }
|
|
30
|
+
};
|
|
54
31
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
32
|
+
// Hata Yanıtı (Gerçek HTTP 401/404 vb. ile birlikte)
|
|
33
|
+
const error: ApiError = {
|
|
34
|
+
success: false,
|
|
35
|
+
code: 'UNAUTHORIZED',
|
|
36
|
+
message: 'Yetkisiz erişim.',
|
|
37
|
+
statusCode: 401
|
|
38
|
+
};
|
|
59
39
|
```
|
|
60
40
|
|
|
61
|
-
##
|
|
41
|
+
## 📐 Mimari Kurallar
|
|
62
42
|
|
|
63
|
-
|
|
64
|
-
|
|
43
|
+
1. **Owner:** Bu paketin birincil sahibi `@backend` ajanıdır.
|
|
44
|
+
2. **Workflow:** Backend bir tip değiştirir -> `contract_hash` güncellenir -> Frontend dökümantasyonu okur ve tipi import eder.
|
|
45
|
+
3. **No Logic:** Bu paket sadece tip tanımları ve hafif yardımcılar (generator'lar) içermelidir; ağır iş mantığı barındıramaz.
|
|
65
46
|
|
|
66
|
-
|
|
67
|
-
return raw as UserID;
|
|
68
|
-
}
|
|
47
|
+
## 🔨 Geliştirme
|
|
69
48
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
};
|
|
49
|
+
```bash
|
|
50
|
+
npm install
|
|
51
|
+
npm run build # npx tsc ile derler
|
|
74
52
|
```
|
|
75
53
|
|
|
76
|
-
##
|
|
77
|
-
|
|
78
|
-
1. `src/index.ts` güncelle.
|
|
79
|
-
2. `npm run typecheck` çalıştır.
|
|
80
|
-
3. `npm run build` ile `dist` üret.
|
|
81
|
-
4. `contract.version.json` hash güncelle.
|
|
82
|
-
5. `PROJECT_MEMORY.md` ve ilgili log dosyasında değişikliği kaydet.
|
|
83
|
-
|
|
84
|
-
## Lisans
|
|
54
|
+
## 📜 Lisans
|
|
85
55
|
|
|
86
56
|
MIT
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-enderun-shared-types",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Shared TypeScript types for backend ↔ frontend contract. Owned by @backend, consumed by @frontend.",
|
|
5
5
|
"author": "Yusuf BEKAR <ybekar@msn.com>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/ysf-bkr/AI-Enderun.git"
|
|
8
|
+
"url": "git+https://github.com/ysf-bkr/AI-Enderun.git"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/ysf-bkr/AI-Enderun#readme",
|
|
11
11
|
"main": "dist/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"README.md"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "tsc",
|
|
19
|
+
"build": "npx tsc",
|
|
20
20
|
"build:watch": "tsc --watch",
|
|
21
21
|
"typecheck": "tsc --noEmit"
|
|
22
22
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared Types — AI
|
|
2
|
+
* Shared Types — AI-Enderun v0.0.5
|
|
3
3
|
* Bu paketteki tüm tipler backend ve frontend arasındaki kontratı tanımlar.
|
|
4
4
|
* Sadece @backend düzenler, @frontend okur/import eder.
|
|
5
5
|
*/
|
|
@@ -8,14 +8,30 @@
|
|
|
8
8
|
// Neden: Ham string ID'lerin birbirine karışmasını engeller (UserID ≠ ProductID)
|
|
9
9
|
export type Brand<T, B> = T & { readonly _brand: B };
|
|
10
10
|
|
|
11
|
+
// ─── ULID Generator (Lightweight) ──────────────────────────────────────────────
|
|
12
|
+
const ENCODING = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
|
|
13
|
+
const ENCODING_LEN = ENCODING.length;
|
|
14
|
+
|
|
15
|
+
export const createULID = (seedTime: number = Date.now()): string => {
|
|
16
|
+
let time = seedTime;
|
|
17
|
+
const timeChars = new Array(10);
|
|
18
|
+
for (let i = 9; i >= 0; i--) {
|
|
19
|
+
timeChars[i] = ENCODING.charAt(time % ENCODING_LEN);
|
|
20
|
+
time = Math.floor(time / ENCODING_LEN);
|
|
21
|
+
}
|
|
22
|
+
const randomChars = new Array(16);
|
|
23
|
+
for (let i = 0; i < 16; i++) {
|
|
24
|
+
randomChars[i] = ENCODING.charAt(Math.floor(Math.random() * ENCODING_LEN));
|
|
25
|
+
}
|
|
26
|
+
return timeChars.join("") + randomChars.join("");
|
|
27
|
+
};
|
|
28
|
+
|
|
11
29
|
export type UserID = Brand<string, 'UserID'>;
|
|
12
30
|
export type SessionID = Brand<string, 'SessionID'>;
|
|
13
|
-
// Yeni ID tipleri buraya ekle: export type XxxID = Brand<string, 'XxxID'>;
|
|
14
31
|
|
|
15
|
-
// ─── ID
|
|
16
|
-
|
|
17
|
-
export const
|
|
18
|
-
export const createSessionID = (): SessionID => crypto.randomUUID() as SessionID;
|
|
32
|
+
// ─── ID Üreticiler (Runtime) ──────────────────────────────────────────────────
|
|
33
|
+
export const createUserID = (): UserID => createULID() as UserID;
|
|
34
|
+
export const createSessionID = (): SessionID => createULID() as SessionID;
|
|
19
35
|
|
|
20
36
|
// ─── Pagination ────────────────────────────────────────────────────────────────
|
|
21
37
|
export interface PaginationQuery {
|
|
@@ -32,7 +48,9 @@ export interface PaginatedResponse<T> {
|
|
|
32
48
|
}
|
|
33
49
|
|
|
34
50
|
// ─── API Response Wrapper ──────────────────────────────────────────────────────
|
|
35
|
-
// Neden: Tüm API yanıtları tutarlı yapıda
|
|
51
|
+
// Neden: Tüm API yanıtları tutarlı yapıda olmalı.
|
|
52
|
+
// ÖNEMLİ: Hatalarda 200 OK dönüp içinde "success: false" dönmek YASAKTIR.
|
|
53
|
+
// Gerçek HTTP status kodları (400, 401, 404 vb.) kullanılmalıdır.
|
|
36
54
|
export interface ApiSuccess<T> {
|
|
37
55
|
success: true;
|
|
38
56
|
data: T;
|
|
@@ -42,7 +60,7 @@ export interface ApiError {
|
|
|
42
60
|
success: false;
|
|
43
61
|
code: string; // 'NOT_FOUND' | 'VALIDATION_ERROR' | 'UNAUTHORIZED' vb.
|
|
44
62
|
message: string; // Kullanıcıya gösterilecek mesaj
|
|
45
|
-
statusCode: number;
|
|
63
|
+
statusCode: number; // HTTP status kodu ile eşleşmeli
|
|
46
64
|
}
|
|
47
65
|
|
|
48
66
|
export type ApiResponse<T> = ApiSuccess<T> | ApiError;
|