vibe-governor 1.3.1 → 1.3.2

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 CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm](https://img.shields.io/npm/v/vibe-governor)](https://www.npmjs.com/package/vibe-governor)
4
4
  [![license](https://img.shields.io/npm/l/vibe-governor)](https://github.com/SafakSahinn/vibe-governor/blob/main/LICENSE)
5
5
 
6
- **English** · [Türkçe](https://github.com/SafakSahinn/vibe-governor/blob/main/README.tr.md)
6
+ **English** · [Türkçe](https://github.com/SafakSahinn/vibe-governor/blob/main/BENIOKU.md)
7
7
 
8
8
  Guardrails for AI-assisted ("vibe coding") projects, both software and hardware (Verilog/VHDL).
9
9
  Vibe Governor installs one shared rule set for all your AI coding assistants, a **Memory Bank** that
@@ -991,7 +991,7 @@ ${body(v,s)}`}],PLATFORM_FILES=Object.fromEntries(RULE_FILES.map(d=>[d.platform,
991
991
  - **Technical Debts & Known Bugs:**
992
992
  - [ ] Finalize end-to-end integration test suites.
993
993
  `]]}function buildMemoryBankFiles(data,vars,safety){return(data.locale==="tr"?trFiles(data,vars,safety):enFiles(data,vars,safety)).map(([name,content])=>({path:`.memory_bank/${name}`,name,content,language:"markdown",category:"memory_bank"}))}function contentHash(text){let normalized=text.replace(/\r\n/g,`
994
- `),a=2166136261,b=1523705862;for(let i=0;i<normalized.length;i++){let c=normalized.charCodeAt(i);a=Math.imul(a^c,16777619)>>>0,b=Math.imul(b^c,16777619)>>>0,b=(b^b>>>13)>>>0}return a.toString(16).padStart(8,"0")+b.toString(16).padStart(8,"0")}var VERSION="1.3.1";function buildTemplateVars(data){let maxLines=data.constraints.maxLines||800,rules=getEnabledRules(data);return{MAX_LINES:String(maxLines),MAX_LINES_THRESHOLD:String(Math.max(100,maxLines-100)),DOC_SCORE:String(data.constraints.docScoreThreshold||8),LOCALE:data.locale,ENABLED_RULES:JSON.stringify(rules),ENABLED_RULES_DOC:rules.length>0?rules.join(", "):"(none)"}}function applyTemplate(template,vars){return template.replace(/\{\{([A-Z_]+)\}\}/g,(match,key)=>key in vars?vars[key]:match)}function generateProjectFiles(data){let vars=buildTemplateVars(data),fill=t=>applyTemplate(t,vars),safetySummary=getSafetySummary(data),files=[];files.push({path:"AI_GUIDELINES.md",name:"AI_GUIDELINES.md",content:fill(buildGuidelinesTemplate(data)),language:"markdown",category:"guidelines"}),files.push(...buildIdeRuleFiles(data,vars,safetySummary)),files.push(...buildMemoryBankFiles(data,vars,safetySummary));let a=data.automation;return a.includeCheckGuidelines&&files.push({path:"scripts/check_guidelines.py",name:"check_guidelines.py",content:fill(TEMPLATE_CHECK_GUIDELINES_PY),language:"python",category:"scripts"}),a.includePreCommitHook&&files.push({path:"scripts/pre-commit-hook.sh",name:"pre-commit-hook.sh",content:buildPreCommitHook(data.locale),language:"shell",category:"scripts"}),(a.includeCheckGuidelines||a.includePreCommitHook)&&files.push({path:".gitattributes",name:".gitattributes",content:`*.sh text eol=lf
994
+ `),a=2166136261,b=1523705862;for(let i=0;i<normalized.length;i++){let c=normalized.charCodeAt(i);a=Math.imul(a^c,16777619)>>>0,b=Math.imul(b^c,16777619)>>>0,b=(b^b>>>13)>>>0}return a.toString(16).padStart(8,"0")+b.toString(16).padStart(8,"0")}var VERSION="1.3.2";function buildTemplateVars(data){let maxLines=data.constraints.maxLines||800,rules=getEnabledRules(data);return{MAX_LINES:String(maxLines),MAX_LINES_THRESHOLD:String(Math.max(100,maxLines-100)),DOC_SCORE:String(data.constraints.docScoreThreshold||8),LOCALE:data.locale,ENABLED_RULES:JSON.stringify(rules),ENABLED_RULES_DOC:rules.length>0?rules.join(", "):"(none)"}}function applyTemplate(template,vars){return template.replace(/\{\{([A-Z_]+)\}\}/g,(match,key)=>key in vars?vars[key]:match)}function generateProjectFiles(data){let vars=buildTemplateVars(data),fill=t=>applyTemplate(t,vars),safetySummary=getSafetySummary(data),files=[];files.push({path:"AI_GUIDELINES.md",name:"AI_GUIDELINES.md",content:fill(buildGuidelinesTemplate(data)),language:"markdown",category:"guidelines"}),files.push(...buildIdeRuleFiles(data,vars,safetySummary)),files.push(...buildMemoryBankFiles(data,vars,safetySummary));let a=data.automation;return a.includeCheckGuidelines&&files.push({path:"scripts/check_guidelines.py",name:"check_guidelines.py",content:fill(TEMPLATE_CHECK_GUIDELINES_PY),language:"python",category:"scripts"}),a.includePreCommitHook&&files.push({path:"scripts/pre-commit-hook.sh",name:"pre-commit-hook.sh",content:buildPreCommitHook(data.locale),language:"shell",category:"scripts"}),(a.includeCheckGuidelines||a.includePreCommitHook)&&files.push({path:".gitattributes",name:".gitattributes",content:`*.sh text eol=lf
995
995
  *.py text eol=lf
996
996
  *.yml text eol=lf
997
997
  `,language:"plaintext",category:"config"}),a.includeGitHubCI&&files.push({path:".github/workflows/ai-guidelines-ci.yml",name:"ai-guidelines-ci.yml",content:TEMPLATE_GITHUB_CI,language:"yaml",category:"ci"}),a.includeAuditPrompt&&files.push({path:"AUDIT_PROMPT.md",name:"AUDIT_PROMPT.md",content:fill(buildAuditPrompt(data.locale)),language:"markdown",category:"guidelines"}),a.includeGitignore&&files.push({path:".gitignore",name:".gitignore",content:buildGitignore(data.locale),language:"plaintext",category:"config"}),files.push(buildConfigFile(data,files)),files}var CONFIG_FILE="vibe-governor.json";function isUserOwnedPath(path2){return path2.startsWith(".memory_bank/")||path2===".gitignore"||path2===CONFIG_FILE}function buildConfigFile(data,files,hashOverrides={}){let managedFiles={};for(let f of files)isUserOwnedPath(f.path)||(managedFiles[f.path]=contentHash(f.content));Object.assign(managedFiles,hashOverrides);let doc={$comment:"Vibe Governor project config. Change settings with `npx vibe-governor update` or load this file in the web wizard.",formatVersion:1,generator:`vibe-governor@${VERSION}`,config:data,managedFiles};return{path:CONFIG_FILE,name:CONFIG_FILE,content:JSON.stringify(doc,null,2)+`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-governor",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "Vibe Governor web wizard + CLI: AI guidelines, Memory Bank and guard scripts for AI-assisted software and HDL projects.",
5
5
  "license": "MIT",
6
6
  "author": "SafakSahinn",
package/README.tr.md DELETED
@@ -1,117 +0,0 @@
1
- # 🛡️ Vibe Governor Web Sihirbazı
2
-
3
- [English](README.md) · **Türkçe**
4
-
5
- **Vibe Governor**, yapay zeka destekli (vibe coding) büyük ölçekli yazılım ve donanım (HDL: Verilog/VHDL) projelerinde hafıza kaybını, 800 satır kuralı ihlallerini ve spagetti kod sapmalarını engelleyen modern bir web sihirbazı ve otomasyon platformudur.
6
-
7
- ---
8
-
9
- ## 🚀 Özellikler & 5 Adımlı Akış
10
-
11
- 1. **Adım 1: Dil ve Target AI Platform Seçimi**
12
- - Arayüz dili (sağ üst TR/EN) ve üretilen dosyaların dili ayrı ayrı seçilir
13
- - Çoklu AI Asistan Desteği: AGENTS.md standardı, Claude Code, Gemini CLI, Google Antigravity, Cursor, Windsurf/Devin, Cline, GitHub Copilot
14
- - Diller: C, C++, C#, Java, JavaScript, TypeScript, Python, Go, Rust, Kotlin, Swift, PHP ve HDL (Verilog, VHDL)
15
-
16
- 2. **Adım 2: Mimari ve Kısıtlar Yapılandırması**
17
- - Ayarlanabilir Dosya Satır Tavanı (Varsayılan 800 satır)
18
- - Dokümantasyon Kalite Barajı (Varsayılan 8/10)
19
- - Dile Özel Güvenlik Anahtarları (23 anahtar): C güvensiz fonksiyonlar ve malloc NULL kontrolü, C++ ham işaretçi, C# dynamic/async void, Java istisna/loglama, JavaScript var/==, TypeScript any, Python tip ipuçları/global, Go hata kontrolü, Rust unsafe/clone, Kotlin !!/GlobalScope, Swift zorla açma, PHP strict_types/eval/hazırlanmış SQL, HDL atama, latch ve VHDL duyarlılık listesi
20
-
21
- 3. **Adım 3: Memory Bank Formu (6 Çekirdek Dosya)**
22
- - `projectbrief.md`: Proje Vizyonu ve Çekirdek Hedefler
23
- - `productContext.md`: Çözülen Problem ve Kullanıcı Deneyimi
24
- - `systemPatterns.md`: Mimari Desenler, Modül Hiyerarşisi, Veri Akışı
25
- - `techContext.md`: Teknolojiler, Bağımlılıklar, Derleme Komutları
26
- - `activeContext.md`: Mevcut Odak, Son Yapılanlar, Sıradaki Adımlar
27
- - `progress.md`: Çalışan Modüller, Tamamlanış Oranı, Teknik Borçlar
28
- - Tek tıkla hazır örneklerle doldurma (`Pre-fill`)
29
-
30
- 4. **Adım 4: Otomasyon ve Denetçi Betikleri**
31
- - `scripts/check_guidelines.py`: Statik kod boyutu ve yasaklı anahtar kelime denetçisi
32
- - `scripts/pre-commit-hook.sh`: Git pre-commit engelleyici kanca
33
- - `.github/workflows/ai-guidelines-ci.yml`: GitHub Actions CI/CD otomasyonu
34
- - `AUDIT_PROMPT.md`: Frontier modeller (Opus/Sonnet/GPT-4o) için teknik borç tarama talimatı
35
- - `.gitignore`: Memory bank korumalı git konfigürasyonu
36
-
37
- 5. **Adım 5: Ön İzleme ve Dışa Aktarma Hub'ı**
38
- - İnteraktif Dosya Ağacı (Tree View) ve Arama/Filtreleme
39
- - Satır numaralı, syntax-aware Kod Ön İzleme, Tekil Dosya İndirme ve Kopyalama
40
- - **Proje Paketini İndir (.ZIP):** Tarayıcı tarafında JSZip ile eksiksiz klasör yapılı `.zip` paketi
41
- - **Tek Satır CLI Komutu Üretimi**
42
-
43
- ---
44
-
45
- ## 📖 Uygulama İçi Rehber
46
-
47
- Sağ üstteki **Rehber / Guide** butonu; uygulamanın ne yaptığını, ne işe yaradığını, 5 adımın nasıl çalıştığını, üretilen dosyaları, kurulumu, günlük akışı, denetçi kurallarını ve SSS’yi iki dilde anlatır.
48
-
49
- ## ⌨️ CLI (Tek Satır Kurulum)
50
-
51
- Sihirbazın 5. adımındaki komut, tüm seçimleri `--preset` ile taşır ve aynı dosyaları doğrudan proje klasörüne yazar (Node.js 18+):
52
-
53
- ```bash
54
- npx -y vibe-governor init --preset=<sihirbazdan kopyalanan değer>
55
- # veya preset olmadan:
56
- npx -y vibe-governor init --name=my-app --languages=Rust,Verilog --lang=en
57
- ```
58
-
59
- - `--languages` verilmezse diller projedeki dosyalardan algılanır (`npx vibe-governor detect` ile görebilirsiniz).
60
- - Mevcut dosyalar korunur (`--force` ile üzerine yazılır), `--dry-run` sadece listeler.
61
- - Tüm seçimler `vibe-governor.json` dosyasına kaydedilir. Sonradan değiştirmek için:
62
- `npx -y vibe-governor update --max-lines=600 --enable=tsNoAny --disable=includeGitHubCI`
63
- Elle düzenlenmiş dosyalar korunur (yeni sürüm `<dosya>.vibe-new` olarak yazılır), Memory Bank'e dokunulmaz, seçimden çıkan araçların değiştirilmemiş dosyaları kaldırılır.
64
- - Sihirbazdaki **Yapılandırma Yükle** düğmesi bir projenin `vibe-governor.json` dosyasını forma geri yükler.
65
-
66
- ### Mevcut projeler, istisnalar ve Memory Bank uyarısı
67
-
68
- - `python3 scripts/check_guidelines.py --update-baseline` mevcut ihlalleri `.vibe-baseline.json`'a alır; sonra yalnızca yeni ihlaller commit'i engeller.
69
- - Satır içi istisna: `// vibe-ignore: ts_any`, bir alt satır için `vibe-ignore-next-line`, tüm dosya için ilk 10 satırda `vibe-ignore-file: line_limit`. Her bulgunun sonunda kural kimliği yazar.
70
- - Pre-commit kancası `--staged` ile yalnızca commit'e giren dosyaların hazırlanmış içeriğini denetler; kod değişip `.memory_bank/` güncellenmediyse uyarır.
71
-
72
- ### Araç dosyaları (güncel resmi biçimler)
73
-
74
- AGENTS.md · CLAUDE.md · GEMINI.md · `.agents/rules/` (Antigravity) · `.cursor/rules/*.mdc` · `.windsurf/rules/` · `.clinerules/` · `.github/copilot-instructions.md`
75
- - Klasörde git deposu varsa `.git/hooks/pre-commit` otomatik kurulur (`--no-hook` ile kapatılır).
76
- - GitHub sürümü de çalışır: `npx -y github:SafakSahinn/vibe-governor init ...`
77
-
78
- ## 🧱 Mimari
79
-
80
- - `src/lib/schema.ts` — Zod şeması (React Hook Form doğrulaması + CLI preset doğrulaması)
81
- - `src/lib/rules.ts` — seçili dil × güvenlik anahtarı → aktif kural listesi
82
- - `src/lib/templates/` — `AI_GUIDELINES.md`, IDE kural dosyaları, Memory Bank, `check_guidelines.py`, kanca/CI/denetim/.gitignore şablonları
83
- - `src/lib/templateEngine.ts` — `{{PLACEHOLDER}}` motoru ve dosya üretimi
84
- - `cli/index.ts` → `bin/vibe-governor.cjs` (esbuild ile tek dosya, bağımlılıksız)
85
- - `src/components/ui/` — shadcn/ui bileşenleri (Button, Switch, Dialog; Radix tabanlı, `components.json` ile `npx shadcn add` uyumlu)
86
- - Yığın: Next.js 16 (statik export), React 19, Tailwind CSS 3, React Hook Form + Zod 4, Monaco Editor, Framer Motion
87
-
88
- ## 🧪 Test
89
-
90
- ```bash
91
- npm test # CLI'yı derler; üretilen paketi ve Python denetçisini iyi/kötü örneklerle, ardından arayüzü (Vitest + Testing Library) test eder
92
- npm run test:ui # yalnızca arayüz testleri
93
- npm run lint # ESLint (eslint-config-next)
94
- ```
95
-
96
- `cli/` veya `src/lib/` değiştiğinde `npm run build:cli` ile `bin/vibe-governor.cjs` yeniden üretilip commit'lenmelidir (npx GitHub'dan bu dosyayı çalıştırır).
97
-
98
- ## 💻 Çalıştırma Talimatları
99
-
100
- Geliştirme sunucusunu başlatmak için:
101
-
102
- ```bash
103
- npm run dev
104
- ```
105
-
106
- Ardından tarayıcınızdan `http://localhost:3000` adresine gidin.
107
-
108
- Üretim derlemesi için:
109
-
110
- ```bash
111
- npm run build
112
- npm run start
113
- ```
114
-
115
- ## 📄 Lisans
116
-
117
- [MIT](LICENSE) © 2026 SafakSahinn