{
  "permissions": {
    "allow": [
      "WebSearch",
      "Bash(cat:*)",
      "SlashCommand(/Az-Token:*)",
      "Bash(wasm-pack build:*)",
      "Bash(ng build:*)",
      "Bash(cargo build:*)",
      "Bash(dir:*)",
      "Bash(findstr:*)",
      "Bash(powershell -Command \"cd ''D:\\__sistem__\\Masaustu\\FikoYT.Yeni.Cag\\fikoyt-zorro.com\\fikoyt-wasm'' && if (Test-Path ''build.ps1'') { Write-Host ''Build script found'' } else { Write-Host ''No build script'' }\")",
      "Bash(cargo check:*)",
      "Bash(rustc:*)",
      "Bash(curl:*)",
      "Bash(sh -s -- -y)",
      "Bash(wget:*)",
      "Bash(apt-get update:*)",
      "Bash(apt-get install:*)",
      "Bash(c/Users/FikoYT/.cargo/bin/cargo --version)",
      "Bash(find:*)",
      "Bash(ls:*)",
      "Bash(docker --version:*)",
      "Bash(node build-wasm.js:*)",
      "Bash(python3 create-wasm.py:*)",
      "Bash(python create-wasm.py:*)",
      "Bash(npm run build:*)",
      "Bash(cargo --version:*)",
      "Bash(powershell.exe -Command \"Get-Command cargo -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Source\")",
      "Bash(cmd.exe /c \"cargo --version\")",
      "Bash(powershell.exe:*)",
      "Bash(/c/Users/$USER/.cargo/bin/wasm-pack.exe build:*)",
      "Bash(/c/Users/FikoYT/.cargo/bin/wasm-pack.exe build:*)",
      "Bash(export PATH=\"/c/Users/FikoYT/.cargo/bin:$PATH\")",
      "WebFetch(domain:community.3dcs.com)",
      "Bash(RUSTFLAGS=\"-C target-feature=+simd128 -C opt-level=3\" wasm-pack build:*)",
      "Bash(cargo install:*)",
      "Bash(where cargo:*)",
      "Bash(/c/Users/FikoYT/.cargo/bin/cargo --version)",
      "Bash(/c/Users/FikoYT/.cargo/bin/cargo install wasm-pack)",
      "Bash(RUSTFLAGS=\"-C target-feature=+simd128 -C opt-level=3 -C lto=fat\" /c/Users/FikoYT/.cargo/bin/wasm-pack build:*)",
      "Bash(rustup target add:*)",
      "Bash(RUSTFLAGS=\"-C target-feature=+simd128 -C opt-level=3 -C lto=fat\" wasm-pack build:*)",
      "Bash(node --version)",
      "Bash(unzip:*)",
      "mcp__kapture__navigate",
      "mcp__kapture__list_tabs",
      "mcp__kapture__new_tab",
      "Bash(git:*)",
      "Bash(npm install:*)",
      "Bash(npm test:*)",
      "Bash(ng new:*)",
      "Bash(D:/__sistem__/Masaustu/FikoYT-Sistem-YZ/)",
      "Bash(\"D:/__sistem__/Masaustu/FikoYT-Sistem-YZ/soyagaci/README.md\":*)",
      "Bash(cat > \"D:/__sistem__/Masaustu/FikoYT-Sistem-YZ/soyagaci/DEVELOPMENT.md\" << 'EOF'\n# Soyağacı Geliştirme Rehberi\n\nBu rehber Soyağacı projesinde geliştirme yapmak isteyenler için oluşturulmuştur.\n\n## 🔧 Geliştirme Ortamı Kurulumu\n\n### Ön Gereksinimler\n\n- **Node.js**: 20.0.0 veya üzeri\n- **npm**: 10.0.0 veya üzeri\n- **Git**: En son sürüm\n- **VS Code** \\(önerilen\\)\n\n### Kurulum Adımları\n\n```bash\n# 1. Repoyu klonla\ngit clone <repository-url>\ncd soyagaci\n\n# 2. Bağımlılıkları yükle\nnpm install\n\n# 3. Geliştirme sunucusunu başlat\nnpm start\n\n# 4. Tarayıcıda aç\n# https://0.0.0.0:499\n```\n\n## 🚀 Geliştirme Sunucusu\n\n### HTTPS + Port 499\n\nAngular geliştirme sunucusu otomatik olarak HTTPS ile port 499'da çalışır:\n\n```bash\nnpm start\n```\n\n**URL**: `https://0.0.0.0:499`\n\nSertifikalar:\n- **Konum**: `D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/docker/fikoyt-sunucu/merkez.go-server.com/cert/`\n- **Dosyalar**: `server.crt`, `server.key`\n\n### Farklı Port/SSL Ayarları\n\n```bash\n# HTTP ile port 4200'de\nng serve --port 4200 --ssl false\n\n# Başka SSL sertifikaları\nng serve --ssl --ssl-cert path/to/cert.crt --ssl-key path/to/cert.key\n```\n\n## 📁 Proje Yapısı Detayları\n\n### Standalone App \\(`src/`\\)\n\n```\nsrc/\n├── app/\n│   ├── auth/\n│   │   ├── giris-yap.component.ts      # Login sayfası\n│   │   ├── giris-yap.component.html\n│   │   ├── giris-yap.component.less\n│   │   ├── kayit-ol.component.ts       # Kayıt sayfası\n│   │   ├── kayit-ol.component.html\n│   │   └── kayit-ol.component.less\n│   │\n│   ├── shell/\n│   │   ├── shell.component.ts          # Main layout\n│   │   ├── shell.component.html\n│   │   └── shell.component.less\n│   │\n│   ├── sayfalar/\n│   │   └── kullanici/\n│   │       ├── ana-sayfa/              # Dashboard\n│   │       ├── soyagaci-genel/         # Public view\n│   │       └── uye/\n│   │           └── arkadaslar/\n│   │               └── soy-agaci/      # App routes\n│   │\n│   ├── app.routes.ts                   # Ana routing\n│   ├── app.component.ts\n│   └── app.component.html\n│\n├── index.html                          # PWA meta etiketleri\n├── main.ts                            # Bootstrap\n├── styles.less                        # Global stiller\n└── favicon.ico\n\n```\n\n### Kütüphane \\(`projects/ng-soyagaci/`\\)\n\n```\nprojects/ng-soyagaci/\n├── src/lib/\n│   ├── adapters/\n│   │   ├── soy-agaci-api.adapter.ts       # ISoyAgaciApiAdapter interface\n│   │   └── mock-api.adapter.ts            # Demo implementasyonu\n│   │\n│   ├── components/\n│   │   ├── agac-goruntule/                # Ana ağaç bileşeni\n│   │   │   ├── .component.ts\n│   │   │   ├── .component.html\n│   │   │   └── .component.less\n│   │   │\n│   │   ├── agac-goruntule-temel/          # Basit ağaç\n│   │   ├── agac-istatistikler/            # İstatistikler\n│   │   ├── aile-zaman-cizelgesi/          # Timeline\n│   │   ├── akraba-bul/                    # Akraba arama\n│   │   ├── akrabalik-yolu/                # İlişki yolu\n│   │   ├── dialog-akraba-ekle/            # Modals\n│   │   ├── dialog-akrabalik-turu-sec/\n│   │   ├── dialog-ani-ekle/\n│   │   ├── dialog-fotograf-galeri/\n│   │   ├── dialog-kisi-detay/\n│   │   ├── dialog-kisi-duzenle/\n│   │   ├── dialog-soy-belgesi-aktar/\n│   │   ├── dialog-yedek/\n│   │   ├── drawer-kisi-detay/             # Drawers\n│   │   └── drawer-tum-kisiler/\n│   │\n│   ├── services/\n│   │   ├── soy-agaci.service.ts           # Core logic\n│   │   │   ├── Pipeline builders\n│   │   │   ├── BFS pathfinding\n│   │   │   └── Turkish grammar\n│   │   │\n│   │   ├── soy-agaci-chart.service.ts     # family-chart integration\n│   │   └── soy-agaci-export.service.ts    # Export \\(SVG/PNG/JSON/CSV\\)\n│   │\n│   ├── interfaces/\n│   │   └── soy-agaci.interface.ts\n│   │       ├── AkrabalikTuru enum \\(40+ types\\)\n│   │       ├── IAkrabalikBilgi interface\n│   │       ├── ISoyAgaciKisiVeri interface\n│   │       ├── IAileBagi interface\n│   │       └── Diğer data models\n│   │\n│   ├── public-api.ts                     # Kütüphane exports\n│   └── index.ts\n│\n├── ng-package.json                      # NPM paket konfigü\n├── package.json\n├── tsconfig.lib.json\n└── tsconfig.lib.prod.json\n\n```\n\n## 🔄 Geliştirme Akışı\n\n### Yeni Özellik Ekleme\n\n1. **Planlama**\n   ```bash\n   # Feature branch oluştur\n   git checkout -b feature/yeni-ozellik\n   ```\n\n2. **Geliştirme**\n   ```bash\n   # Dev sunucusunu başlat\n   npm start\n   \n   # Kod değişiklikleri yap\n   # Tarayıcıda hot reload otomatik\n   ```\n\n3. **Test**\n   ```bash\n   npm test\n   npm test -- --watch\n   ```\n\n4. **Build ve Kontrol**\n   ```bash\n   npm run build:prod\n   # dist/soyagaci/browser/ kontrol et\n   ```\n\n5. **Commit ve Push**\n   ```bash\n   git add .\n   git commit -m \"feat: açıklamalar\"\n   git push origin feature/yeni-ozellik\n   ```\n\n6. **Pull Request**\n   - GitHub'da PR oluştur\n   - Code review bekle\n\n### Kütüphane Geliştirme\n\n```bash\n# Kütüphane değişiklikleri\n# projects/ng-soyagaci/ içinde çalış\n\n# Watch modda build et\nnpm run library:watch\n\n# Başka projede test et\ncd projects/ng-soyagaci/dist/\nnpm link\n# Başka proje: npm link @fikoyt/ng-soyagaci\n```\n\n## 🎨 Stilizasyon \\(LESS\\)\n\n### Global Stiller\n\n```less\n// src/styles.less\n\n// Color variables\n@primary-color: #2d5016;      // Orman yeşili\n@success-color: #10b981;      // Açık yeşil\n@info-color: #3b82f6;         // Mavi\n@warning-color: #f59e0b;      // Turuncu\n@error-color: #ef4444;        // Kırmızı\n\n// Spacing\n@base-unit: 8px;\n@spacing-sm: @base-unit;\n@spacing-md: @base-unit * 2;\n@spacing-lg: @base-unit * 3;\n\n// Typography\n@font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n@font-size-base: 14px;\n@line-height-base: 1.5715;\n\n// Breakpoints\n@media-xs: 480px;\n@media-sm: 576px;\n@media-md: 768px;\n@media-lg: 992px;\n@media-xl: 1200px;\n@media-xxl: 1600px;\n```\n\n### Component Stil Örneği\n\n```less\n// Component: agac-goruntule.component.less\n\n.agac-container {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  gap: @spacing-md;\n  padding: @spacing-lg;\n  background: #f8fafc;\n\n  .toolbar {\n    display: flex;\n    gap: @spacing-md;\n    align-items: center;\n    flex-wrap: wrap;\n  }\n\n  .tree-wrapper {\n    flex: 1;\n    overflow: auto;\n    border-radius: 8px;\n    background: white;\n\n    @media \\(max-width: @media-md\\) {\n      border-radius: 4px;\n    }\n  }\n}\n```\n\n## 🔌 API Adaptör Oluşturma\n\n### Interface Tanımı\n\n```typescript\n// adapters/soy-agaci-api.adapter.ts\n\nexport interface ISoyAgaciApiAdapter {\n  // Okuma\n  aggregate\\(koleksiyon: string, pipeline: any[]\\): Observable<any[]>;\n  bul\\(koleksiyon: string, filtre: any\\): Observable<any[]>;\n  \n  // Yazma\n  ekle\\(koleksiyon: string, veri: any\\): Observable<any>;\n  guncelle\\(koleksiyon: string, filtre: any, set: any\\): Observable<any>;\n  sil\\(koleksiyon: string, filtre: any\\): Observable<any>;\n  \n  // Kimlik doğrulama\n  aktifKullaniciId\\(\\): string;\n  aktifKullaniciProfil\\(\\): ISoyAgaciKullanici;\n}\n```\n\n### Implementasyon Örneği\n\n```typescript\n// adapters/rest-api.adapter.ts\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable\\({ providedIn: 'root' }\\)\nexport class RestSoyAgaciApiAdapter implements ISoyAgaciApiAdapter {\n  private apiUrl = 'https://api.example.com/soyagaci';\n\n  constructor\\(private http: HttpClient\\) {}\n\n  aggregate\\(koleksiyon: string, pipeline: any[]\\): Observable<any[]> {\n    return this.http.post<any[]>\\(\n      `${this.apiUrl}/${koleksiyon}/aggregate`,\n      { pipeline }\n    \\);\n  }\n\n  ekle\\(koleksiyon: string, veri: any\\): Observable<any> {\n    return this.http.post\\(\n      `${this.apiUrl}/${koleksiyon}`,\n      veri\n    \\);\n  }\n\n  // ... diğer metodlar\n}\n```\n\n## 🧪 Unit Test Yazma\n\n```typescript\n// components/agac-goruntule.component.spec.ts\n\nimport { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { AgacGoruntuComponent } from './agac-goruntule.component';\nimport { SoyAgaciService } from '../services/soy-agaci.service';\nimport { MockSoyAgaciApiAdapter } from '../adapters/mock-api.adapter';\n\ndescribe\\('AgacGoruntuComponent', \\(\\) => {\n  let component: AgacGoruntuComponent;\n  let fixture: ComponentFixture<AgacGoruntuComponent>;\n  let service: SoyAgaciService;\n\n  beforeEach\\(async \\(\\) => {\n    await TestBed.configureTestingModule\\({\n      imports: [AgacGoruntuComponent],\n      providers: [\n        SoyAgaciService,\n        { provide: 'API_ADAPTER', useClass: MockSoyAgaciApiAdapter }\n      ]\n    }\\).compileComponents\\(\\);\n\n    fixture = TestBed.createComponent\\(AgacGoruntuComponent\\);\n    component = fixture.componentInstance;\n    service = TestBed.inject\\(SoyAgaciService\\);\n    fixture.detectChanges\\(\\);\n  }\\);\n\n  it\\('should create', \\(\\) => {\n    expect\\(component\\).toBeTruthy\\(\\);\n  }\\);\n\n  it\\('should load family data', \\(done\\) => {\n    component.apiAdapter = new MockSoyAgaciApiAdapter\\(\\);\n    // Test verisi kur\n    expect\\(component.mesgul\\).toBe\\(false\\);\n    done\\(\\);\n  }\\);\n}\\);\n```\n\n## 🐛 Debugging\n\n### Chrome DevTools\n\n```\n1. F12 açın\n2. Sources tab → komponentin TypeScript dosyası\n3. Breakpoint koy \\(tıkla satır numarasına\\)\n4. Application tab:\n   - Manifest → PWA kontrolü\n   - Service Workers → SW debug\n   - Storage → localStorage/sessionStorage\n```\n\n### Console Komutları\n\n```javascript\n// Service Worker debug\nnavigator.serviceWorker.getRegistrations\\(\\)\n  .then\\(registrations => console.log\\(registrations\\)\\);\n\n// Cache debug\ncaches.keys\\(\\).then\\(names => console.log\\(names\\)\\);\n\n// LocalStorage debug\nconsole.log\\(JSON.parse\\(localStorage.getItem\\('soyagaci-user'\\)\\)\\);\n```\n\n### VS Code Debugging\n\n`.vscode/launch.json`:\n\n```json\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"name\": \"Chrome\",\n      \"type\": \"chrome\",\n      \"request\": \"launch\",\n      \"url\": \"https://0.0.0.0:499\",\n      \"webRoot\": \"${workspaceFolder}\"\n    }\n  ]\n}\n```\n\n## 📦 Build ve Deployment\n\n### Development Build\n\n```bash\nnpm run build\n# dist/soyagaci/browser/ \\(unoptimized\\)\n```\n\n### Production Build\n\n```bash\nnpm run build:prod\n# Optimized, minified, tree-shaken\n# dist/soyagaci/browser/\n```\n\n### Kütüphane Build\n\n```bash\nnpm run library:build\n# dist/ng-soyagaci/\n# package.json ile npm'e hazır\n```\n\n## 🔐 Güvenlik\n\n### HTTPS/SSL\n\n```bash\n# Sertifikaları güncelle\n# angular.json → serve → options:\n#   sslCert: \"/path/to/new/cert.crt\"\n#   sslKey: \"/path/to/new/key.key\"\n```\n\n### Bağımlılık Güvenliği\n\n```bash\n# Vulnerabilities kontrol et\nnpm audit\n\n# Otomatik fix \\(dikkatli ol!\\)\nnpm audit fix\n\n# Derinlemesine analiz\nnpm audit --production\n```\n\n## 📚 Kullanışlı Komutlar\n\n```bash\n# Dev server \\(hot reload\\)\nnpm start\n\n# Build \\(dev\\)\nnpm run build\n\n# Build \\(prod\\)\nnpm run build:prod\n\n# Watch mode\nnpm run watch\n\n# Testler\nnpm test\nnpm test -- --watch\nnpm test -- --code-coverage\n\n# Kütüphane\nnpm run library:build\nnpm run library:watch\n\n# Package lock sync\nnpm ci\n```\n\n## 🎯 Best Practices\n\n### TypeScript\n\n```typescript\n// ✅ İYİ: Type safety\nfunction addPerson\\(person: ISoyAgaciKisiVeri\\): Observable<any> {\n  return this.apiAdapter.ekle\\('soyAgaciKisiler', person\\);\n}\n\n// ❌ KÖTÜ: Any type\nfunction addPerson\\(person: any\\): Observable<any> {\n  return this.apiAdapter.ekle\\('soyAgaciKisiler', person\\);\n}\n```\n\n### Angular\n\n```typescript\n// ✅ İYİ: OnPush change detection\n@Component\\({\n  selector: 'app-example',\n  changeDetection: ChangeDetectionStrategy.OnPush\n}\\)\n\n// ✅ İYİ: Unsubscribe pattern\nprivate destroy$ = new Subject<void>\\(\\);\n\nngOnInit\\(\\) {\n  this.service.data$\n    .pipe\\(takeUntil\\(this.destroy$\\)\\)\n    .subscribe\\(...\\);\n}\n\nngOnDestroy\\(\\) {\n  this.destroy$.next\\(\\);\n}\n```\n\n### LESS/CSS\n\n```less\n// ✅ İYİ: Variables ve mixins\n@primary-color: #2d5016;\n\n.button {\n  color: @primary-color;\n  \n  &:hover {\n    opacity: 0.8;\n  }\n}\n\n// ❌ KÖTÜ: Magic numbers\n.button {\n  color: #2d5016;\n}\n```\n\n## 📞 Yardım ve Destek\n\n- GitHub Issues: Bug raporları\n- Discussions: Sorular ve öneriler\n- Pull Requests: Katkılar hoş geldiniz!\n\n---\n\nHappy coding! 🚀\nEOF\necho \"DEVELOPMENT.md created successfully\")",
      "Bash(\"D:/__sistem__/Masaustu/FikoYT-Sistem-YZ/*)",
      "Bash(npm run:*)",
      "mcp__ide__getDiagnostics",
      "Bash(cp:*)",
      "Bash(npm start:*)",
      "Bash(npx kill-port:*)",
      "Bash(python:*)",
      "Bash(npx ng:*)",
      "Bash(node:*)",
      "Bash(xargs grep:*)",
      "Bash(grep:*)",
      "Bash(while read f)",
      "Bash(do wc -l \"$f\")",
      "Bash(basename \"$f\")",
      "Bash(done)",
      "Bash(firecrawl login:*)",
      "Bash(npm uninstall:*)",
      "Bash(find D:__sistem__MasaustuFikoYT.Yeni.Cagdocker -type f \\\\\\(-name *.sh -o -name *backup* -o -name *dump* -o -name *restore* \\\\\\))",
      "Bash(docker ps:*)",
      "Bash(docker exec:*)",
      "Bash(mkdir -p \"D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/docker/mongo-db/yedekler\")",
      "Bash(docker cp:*)",
      "Bash(MSYS_NO_PATHCONV=1 docker exec mongodb mongodump --username=fikoyt --password=fikoyt1299 --authenticationDatabase=admin --gzip --archive --quiet)",
      "Bash(\"D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/docker/mongo-db/yedekler/fikoyt-backup-2026-04-05.gz\")",
      "Bash(\"D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/_VT_/mongodb-dbtools-100.10.0/bin/mongodump.exe\" --uri=\"mongodb://fikoyt:fikoyt1299@localhost:27017/?authSource=admin&replicaSet=rs0\" --gzip --out=\"D:/__sistem__/Masaustu/FikoYT.Yeni.Cag/docker/mongo-db/yedekler/yedek-2026-04-05\")",
      "Bash(docker compose:*)",
      "Bash(find D://__sistem__/Masaustu/FikoYT.Yeni.Cag/fikoyt-sistem -type f \\\\\\(-name *.go -o -name *mail* -o -name *dinleyici* \\\\\\))",
      "mcp__Windows-MCP__Screenshot",
      "Bash(xargs wc *)",
      "mcp__filesystem__read_text_file",
      "mcp__filesystem__list_directory",
      "mcp__filesystem__search_files",
      "Read(//d/__sistem__/Mamastu/FikoYT.Yeni.Cag/fikoyt-sistem/src/app/uygulamalar/hmi-pdks/dashboard/**)",
      "PowerShell(npm run *)"
    ],
    "deny": [],
    "ask": []
  },
  "enabledMcpjsonServers": [
    "playwright",
    "context7",
    "mongodb",
    "github",
    "filesystem",
    "kapture"
  ],
  "spinnerTipsEnabled": true
}
