failproofai 0.0.5 → 0.0.6-beta.1

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.
Files changed (179) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +112 -0
  2. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
  3. package/.next/standalone/.next/BUILD_ID +1 -1
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/required-server-files.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  8. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  15. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  17. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  19. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  23. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  25. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/index.html +1 -1
  31. package/.next/standalone/.next/server/app/index.rsc +15 -15
  32. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  34. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  35. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  36. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  37. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  38. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  39. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  42. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  43. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  46. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  55. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  56. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a~g15g._.js → [root-of-the-server]__0rh.18_._.js} +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +6 -6
  67. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qn95h3._.js → [root-of-the-server]__0~kmh8w._.js} +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  73. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  74. package/.next/standalone/.next/server/pages/404.html +2 -2
  75. package/.next/standalone/.next/server/pages/500.html +1 -1
  76. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  78. package/.next/standalone/.next/static/chunks/{0sme4lkv.tgn-.js → 01b~z8f1ws0rk.js} +1 -1
  79. package/.next/standalone/.next/static/chunks/{0lgbwkfqmnsmc.js → 03rz6ykw-a2xi.js} +1 -1
  80. package/.next/standalone/.next/static/chunks/{17manv47o-~wp.js → 08t08igdql9yt.js} +1 -1
  81. package/.next/standalone/.next/static/chunks/09_k80d~cq2wg.js +4 -0
  82. package/.next/standalone/.next/static/chunks/{0ksdlt_1hucdm.js → 0bvhsa6zva2o..js} +1 -1
  83. package/.next/standalone/.next/static/chunks/{09ikntpt2-o9b.js → 0gbf4cphy8ksq.js} +1 -1
  84. package/.next/standalone/.next/static/chunks/{0yumumfzx_f27.js → 0v.yd0kg_ld3r.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/{13juklu.vksks.js → 0wlyoif4_kj_t.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{09e7drilkf1sn.js → 12simlrcfk3g2.js} +1 -1
  87. package/.next/standalone/.next/static/chunks/{0em7tspi4kylh.js → 12~yi9oj8av8p.js} +2 -2
  88. package/.next/standalone/.next/static/chunks/{turbopack-0r26pc8h0y_-e.js → turbopack-0o7k.hakttp4k.js} +1 -1
  89. package/.next/standalone/CHANGELOG.md +13 -0
  90. package/.next/standalone/README.md +2 -2
  91. package/.next/standalone/bun.lock +43 -85
  92. package/.next/standalone/dist/cli.mjs +107 -3
  93. package/.next/standalone/docs/ar/architecture.mdx +65 -64
  94. package/.next/standalone/docs/ar/configuration.mdx +42 -42
  95. package/.next/standalone/docs/ar/custom-policies.mdx +62 -64
  96. package/.next/standalone/docs/built-in-policies.mdx +37 -0
  97. package/.next/standalone/docs/custom-policies.mdx +1 -1
  98. package/.next/standalone/docs/de/architecture.mdx +92 -92
  99. package/.next/standalone/docs/de/configuration.mdx +34 -34
  100. package/.next/standalone/docs/de/custom-policies.mdx +49 -50
  101. package/.next/standalone/docs/es/architecture.mdx +72 -72
  102. package/.next/standalone/docs/es/configuration.mdx +25 -25
  103. package/.next/standalone/docs/es/custom-policies.mdx +48 -49
  104. package/.next/standalone/docs/examples.mdx +54 -0
  105. package/.next/standalone/docs/fr/architecture.mdx +53 -53
  106. package/.next/standalone/docs/fr/configuration.mdx +25 -25
  107. package/.next/standalone/docs/fr/custom-policies.mdx +42 -43
  108. package/.next/standalone/docs/getting-started.mdx +52 -0
  109. package/.next/standalone/docs/he/architecture.mdx +66 -66
  110. package/.next/standalone/docs/he/configuration.mdx +53 -52
  111. package/.next/standalone/docs/he/custom-policies.mdx +72 -73
  112. package/.next/standalone/docs/hi/architecture.mdx +106 -106
  113. package/.next/standalone/docs/hi/configuration.mdx +39 -39
  114. package/.next/standalone/docs/hi/custom-policies.mdx +75 -76
  115. package/.next/standalone/docs/i18n/README.ar.md +66 -66
  116. package/.next/standalone/docs/i18n/README.de.md +38 -38
  117. package/.next/standalone/docs/i18n/README.es.md +38 -38
  118. package/.next/standalone/docs/i18n/README.fr.md +42 -42
  119. package/.next/standalone/docs/i18n/README.he.md +67 -67
  120. package/.next/standalone/docs/i18n/README.hi.md +70 -70
  121. package/.next/standalone/docs/i18n/README.it.md +62 -62
  122. package/.next/standalone/docs/i18n/README.ja.md +54 -54
  123. package/.next/standalone/docs/i18n/README.ko.md +58 -58
  124. package/.next/standalone/docs/i18n/README.pt-br.md +43 -43
  125. package/.next/standalone/docs/i18n/README.ru.md +69 -69
  126. package/.next/standalone/docs/i18n/README.tr.md +76 -76
  127. package/.next/standalone/docs/i18n/README.vi.md +70 -70
  128. package/.next/standalone/docs/i18n/README.zh.md +52 -52
  129. package/.next/standalone/docs/it/architecture.mdx +54 -53
  130. package/.next/standalone/docs/it/configuration.mdx +44 -45
  131. package/.next/standalone/docs/it/custom-policies.mdx +76 -78
  132. package/.next/standalone/docs/ja/architecture.mdx +93 -93
  133. package/.next/standalone/docs/ja/configuration.mdx +47 -47
  134. package/.next/standalone/docs/ja/custom-policies.mdx +62 -63
  135. package/.next/standalone/docs/ko/architecture.mdx +66 -66
  136. package/.next/standalone/docs/ko/configuration.mdx +35 -35
  137. package/.next/standalone/docs/ko/custom-policies.mdx +71 -72
  138. package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
  139. package/.next/standalone/docs/pt-br/configuration.mdx +35 -35
  140. package/.next/standalone/docs/pt-br/custom-policies.mdx +60 -61
  141. package/.next/standalone/docs/ru/architecture.mdx +59 -60
  142. package/.next/standalone/docs/ru/configuration.mdx +52 -53
  143. package/.next/standalone/docs/ru/custom-policies.mdx +68 -69
  144. package/.next/standalone/docs/tr/architecture.mdx +124 -124
  145. package/.next/standalone/docs/tr/configuration.mdx +45 -46
  146. package/.next/standalone/docs/tr/custom-policies.mdx +75 -75
  147. package/.next/standalone/docs/vi/architecture.mdx +65 -64
  148. package/.next/standalone/docs/vi/configuration.mdx +41 -41
  149. package/.next/standalone/docs/vi/custom-policies.mdx +68 -69
  150. package/.next/standalone/docs/zh/architecture.mdx +67 -67
  151. package/.next/standalone/docs/zh/configuration.mdx +34 -34
  152. package/.next/standalone/docs/zh/custom-policies.mdx +53 -54
  153. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  154. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  155. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  156. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  157. package/.next/standalone/node_modules/next/dist/server/config-schema.js +10 -2
  158. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  159. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  160. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  161. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  162. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  163. package/.next/standalone/node_modules/next/dist/server/render.js +27 -20
  164. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  165. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  166. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  167. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  168. package/.next/standalone/node_modules/next/package.json +15 -15
  169. package/.next/standalone/package.json +2 -2
  170. package/.next/standalone/server.js +1 -1
  171. package/.next/standalone/src/hooks/builtin-policies.ts +131 -0
  172. package/README.md +2 -2
  173. package/dist/cli.mjs +107 -3
  174. package/package.json +2 -2
  175. package/src/hooks/builtin-policies.ts +131 -0
  176. package/.next/standalone/.next/static/chunks/0_yayar~bpphd.js +0 -4
  177. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_buildManifest.js +0 -0
  178. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_clientMiddlewareManifest.js +0 -0
  179. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_ssgManifest.js +0 -0
@@ -1,30 +1,30 @@
1
1
  ---
2
2
  ---
3
3
  title: Mimari
4
- description: "Hook handler, config yükleme ve policy değerlendirmesinin dahili olarak nasıl çalıştığı"
4
+ description: "Hook yöneticisinin, config yüklemesinin ve politika değerlendirmesinin dahili olarak nasıl çalıştığı"
5
5
  icon: sitemap
6
6
  ---
7
7
 
8
- Bu belge failproofai'nin dahili işleyişini açıklar: hook sistemi agent tool çağrılarını nasıl keser, yapılandırma nasıl yüklenir ve birleştirilir, policiler nasıl değerlendirilir ve dashboard agent aktivitesini nasıl izler.
8
+ Bu belge failproofai'nin dahili olarak nasıl çalıştığını açıklar: hook sistemi agent araç çağrılarını nasıl yakaladığı, konfigürasyon nasıl yüklenip birleştirildiği, politikalar nasıl değerlendirildiği ve panelin agent aktivitesini nasıl izlediği.
9
9
 
10
10
  ---
11
11
 
12
12
  ## Genel Bakış
13
13
 
14
- failproofai iki bağımsız alt sistemden oluşur:
14
+ failproofai iki bağımsız alt sisteme sahiptir:
15
15
 
16
- 1. **Hook handler** - Claude Code'un her agent tool çağrısında invoke ettiği hızlı bir CLI alt işlemi. Policileri değerlendirir ve bir karar döner.
17
- 2. **Agent Monitor (Dashboard)** - Agent oturumlarını izlemek ve policileri yönetmek için bir Next.js web uygulaması.
16
+ 1. **Hook yöneticisi** - Claude Code'un her agent araç çağrısında çağırdığı hızlı bir CLI alt işlemi. Politikaları değerlendirir ve bir karar döndürür.
17
+ 2. **Agent Monitor (Panel)** - Agent oturumlarını izlemek ve politikaları yönetmek için bir Next.js web uygulaması.
18
18
 
19
- Her iki alt sistem `~/.failproofai/` ve projenin `.failproofai/` dizininde yapılandırma dosyalarını paylaşır, ancak ayrı işlemler olarak çalışırlar ve yalnızca dosya sistemi üzerinden iletişim kurarlar.
19
+ Her iki alt sistem `~/.failproofai/` ve projenin `.failproofai/` dizinindeki konfigürasyon dosyalarını paylaşır, ancak ayrı işlemler olarak çalışırlar ve yalnızca dosya sistemi aracılığıyla iletişim kurarlar.
20
20
 
21
21
  ---
22
22
 
23
- ## Hook handler
23
+ ## Hook yöneticisi
24
24
 
25
25
  ### Claude Code ile Entegrasyon
26
26
 
27
- `failproofai policies --install` çalıştırdığınızda, `~/.claude/settings.json` dosyasına şu gibi girişler yazar:
27
+ `failproofai policies --install` komutunu çalıştırdığınızda, `~/.claude/settings.json` dosyasına şu gibi girişler yazar:
28
28
 
29
29
  ```json
30
30
  {
@@ -45,9 +45,9 @@ Her iki alt sistem `~/.failproofai/` ve projenin `.failproofai/` dizininde yapı
45
45
  }
46
46
  ```
47
47
 
48
- Claude Code daha sonra her tool çağrısından önce `failproofai --hook PreToolUse` komutunu bir alt işlem olarak invoke eder, stdin üzerinde bir JSON payload iletir.
48
+ Claude Code daha sonra her araç çağrısından önce `failproofai --hook PreToolUse` komutunu bir alt işlem olarak çağırır ve stdin'de JSON yükü iletir.
49
49
 
50
- ### Payload formatı
50
+ ### Yük biçimi
51
51
 
52
52
  ```json
53
53
  {
@@ -61,11 +61,11 @@ Claude Code daha sonra her tool çağrısından önce `failproofai --hook PreToo
61
61
  }
62
62
  ```
63
63
 
64
- `PostToolUse` olayları için, payload ayrıca tool'un çıktısını içeren `tool_result` öğesini içerir.
64
+ `PostToolUse` olayları için, yük ayrıca aracın çıktısını içeren `tool_result` içerir.
65
65
 
66
- Handler 1 MB'lık stdin sınırını zorunlu kılar. Bu limiti aşan payload'lar atılır ve tüm policiler zımnen izin verir.
66
+ Yönetici 1 MB stdin sınırı uygular. Bu sınırı aşan yükler atılır ve tüm politikalar örtük olarak izin verir.
67
67
 
68
- ### Yanıt formatı
68
+ ### Yanıt biçimi
69
69
 
70
70
  **Reddet (PreToolUse):**
71
71
  ```json
@@ -86,7 +86,7 @@ Handler 1 MB'lık stdin sınırını zorunlu kılar. Bu limiti aşan payload'lar
86
86
  }
87
87
  ```
88
88
 
89
- **Talimat (Stop dışındaki herhangi bir olay):**
89
+ **Talimat (Stop dışında herhangi bir olay):**
90
90
  ```json
91
91
  {
92
92
  "hookSpecificOutput": {
@@ -95,99 +95,99 @@ Handler 1 MB'lık stdin sınırını zorunlu kılar. Bu limiti aşan payload'lar
95
95
  }
96
96
  ```
97
97
 
98
- **Stop olayı talimatı:**
98
+ **Stop olay talimatı:**
99
99
  - Çıkış kodu: `2`
100
- - Neden stderr'e yazılır (stdout'a değil)
100
+ - Sebep stderr'ye yazılır (stdout değil)
101
101
 
102
102
  **İzin Ver:**
103
103
  - Çıkış kodu: `0`
104
104
  - Boş stdout
105
105
 
106
- **İzinle mesaj:**
106
+ **İletili mesaj ile İzin Ver:**
107
107
 
108
- `allow(message)`, bir policy işleme izin verildiğinde bile Claude'a bilgilendirici bağlam gönderebilir. Hook handler aşağıdaki JSON'u **stdout'a** yazar (bir config dosyasına değil — bu handler'ın Claude Code'a yanıtıdır, reddet ve talimat yanıtları gibi):
108
+ `allow(message)` bir politikanın işlem izin verildiğinde bile Claude'a bilgilendirici bağlam göndermesini sağlar. Hook yöneticisi aşağıdaki JSON'u **stdout**'a yazar (config dosyası değil — bu, yukarıdaki reddet ve talimat yanıtları gibi hook yöneticisinin Claude Code'a verdiği yanıt):
109
109
 
110
110
  ```json
111
- // Hook handler işlemi tarafından stdout'a yazılır
111
+ // Hook yönetici işlemi tarafından stdout'a yazılır
112
112
  {
113
113
  "hookSpecificOutput": {
114
114
  "additionalContext": "All CI checks passed on branch 'feat/my-feature'."
115
115
  }
116
116
  }
117
117
  ```
118
- - Çıkış kodu: `0` (işleme izin verilir)
119
- - Birden çok policy `allow` ile mesaj döndüğünde, mesajları satır sonlarıyla birleştirilmiş bir `additionalContext` dizesine katılır
120
- - Hiçbir policy mesaj sağlamıyorsa, stdout boştur (öncekiyle aynı)
118
+ - Çıkış kodu: `0` (işleme izin verildi)
119
+ - Birden fazla politika mesaj içeren `allow` döndürdüğünde, mesajları yeni satırlarla birleştirilerek tek `additionalContext` dizesine katılır
120
+ - Hiçbir politika mesaj sağlamadığında, stdout boştur (daha öncekinin aynısı)
121
121
 
122
- ### İşleme hattı
122
+ ### İşleme ardışık düzeni
123
123
 
124
- `src/hooks/handler.ts` tam hattı uygular:
124
+ `src/hooks/handler.ts` tam ardışık düzeni uygular:
125
125
 
126
126
  ```text
127
127
  stdin JSON
128
- parse payload (max 1 MB)
129
- extract session metadata (session_id, cwd, tool_name, tool_input, etc.)
130
- → readMergedHooksConfig(cwd) ← merges project + local + global config
131
- register enabled builtin policies with resolved params
132
- load custom policies from customPoliciesPath (if set)
133
- register custom policies into policy registry
134
- evaluate all policies (builtins first, then custom)
135
- first deny short-circuits
136
- instruct decisions accumulate
137
- allow messages accumulate
138
- write JSON decision to stdout
139
- persist event to ~/.failproofai/hook-activity.jsonl
140
- exit
128
+ yük ayrıştırma (maks 1 MB)
129
+ oturum meta verisi çıkarma (session_id, cwd, tool_name, tool_input, vb.)
130
+ → readMergedHooksConfig(cwd) ← proje + yerel + genel config birleştirir
131
+ etkinleştirilen yerleşik politikaları çözülmüş parametrelerle kaydettir
132
+ customPoliciesPath'tan özel politikaları yükle (ayarlanmışsa)
133
+ özel politikaları politika kaydına kaydettir
134
+ tüm politikaları değerlendir (yerleşikleri önce, sonra özel)
135
+ ilk reddet kısa devre yapar
136
+ talimat kararları birikir
137
+ mesajlara izin verir birikiyor
138
+ → JSON kararını stdout'a yaz
139
+ olayı ~/.failproofai/hook-activity.jsonl'ye kaydet
140
+ çık
141
141
  ```
142
142
 
143
- Tipik payload'lar için tüm işlem LLM çağrıları olmadan 100ms altında çalışır.
143
+ Tüm işlem, LLM çağrıları olmayan tipik yükler için 100 ms altında çalışır.
144
144
 
145
145
  ---
146
146
 
147
- ## Yapılandırma yükleme
147
+ ## Konfigürasyon yükleme
148
148
 
149
149
  `src/hooks/hooks-config.ts` üç kapsamlı config yüklemeyi uygular.
150
150
 
151
151
  ```text
152
- [1] {cwd}/.failproofai/policies-config.json ← project (highest priority)
153
- [2] {cwd}/.failproofai/policies-config.local.json ← local
154
- [3] ~/.failproofai/policies-config.json ← global (lowest priority)
152
+ [1] {cwd}/.failproofai/policies-config.json ← proje (en yüksek öncelik)
153
+ [2] {cwd}/.failproofai/policies-config.local.json ← yerel
154
+ [3] ~/.failproofai/policies-config.json ← genel (en düşük öncelik)
155
155
  ```
156
156
 
157
157
  Birleştirme mantığı:
158
- - `enabledPolicies` - üç dosya arasında birleştirilmiş tekil union
159
- - `policyParams` - policy başına anahtar, bunu tanımlayan ilk dosya tamamen kazanır
160
- - `customPoliciesPath` - bunu tanımlayan ilk dosya kazanır
161
- - `llm` - bunu tanımlayan ilk dosya kazanır
158
+ - `enabledPolicies` - üç dosya arasında tekilleştirilmiş birleşim
159
+ - `policyParams` - politika başına anahtar, onu tanımlayan ilk dosya tamamen kazanır
160
+ - `customPoliciesPath` - onu tanımlayan ilk dosya kazanır
161
+ - `llm` - onu tanımlayan ilk dosya kazanır
162
162
 
163
- Web dashboard, project cwd ile invoke edilmediği için okuma ve yazma için `readHooksConfig()` (yalnızca global) kullanır.
163
+ Web paneli, proje cwd'si olmadığı için okuma ve yazma için `readHooksConfig()` (yalnızca genel) kullanır.
164
164
 
165
165
  ---
166
166
 
167
- ## Policy değerlendirmesi
167
+ ## Politika değerlendirmesi
168
168
 
169
- `src/hooks/policy-evaluator.ts` policileri sırayla çalıştırır.
169
+ `src/hooks/policy-evaluator.ts` politikaları sırayla çalıştırır.
170
170
 
171
- Her policy için:
171
+ Her politika için:
172
172
 
173
- 1. Policy'nin `params` şemasını ara (varsa).
174
- 2. Birleştirilmiş config'ten `policyParams[policy.name]` oku.
175
- 3. Kullanıcı tarafından sağlanan değerleri schema varsayılanları üzerine birleştirerek `ctx.params` oluştur.
176
- 4. Çözümlenen context ile `policy.fn(ctx)` çağır.
177
- 5. Sonuç `deny` ise, hemen dur ve bu kararı döndür.
178
- 6. Sonuç `instruct` ise, mesajı birikdir ve devam et.
179
- 7. Sonuç `allow` ise, sonraki policiye geç.
173
+ 1. Politikanın `params` şemasını arayın (eğer varsa).
174
+ 2. Birleştirilmiş config'den `policyParams[policy.name]` okuyun.
175
+ 3. `ctx.params` üretmek için kullanıcı tarafından sağlanan değerleri şema varsayılanlarının üzerine birleştirin.
176
+ 4. `policy.fn(ctx)` komutunu çözülmüş bağlamla çağırın.
177
+ 5. Sonuç `deny` ise, hemen durdurun ve o kararı döndürün.
178
+ 6. Sonuç `instruct` ise, mesajı biriktirebilir ve devam edin.
179
+ 7. Sonuç `allow` ise, sonraki politikaya devam edin.
180
180
 
181
- Tüm policiler çalıştıktan sonra:
182
- - Herhangi bir `deny` döndürülüyse, deny yanıtını yayınla.
183
- - Herhangi bir `instruct` dönüşü toplanmışsa, tüm mesajlar birleştirilmiş tek bir instruct yanıtı yayınla.
184
- - Aksi halde, allow yanıtını yayınla (boş stdout, exit 0).
181
+ Tüm politikalar çalıştıktan sonra:
182
+ - Herhangi bir `deny` döndürüldüyse, reddet yanıtını gönderin.
183
+ - Herhangi bir `instruct` dönüşü toplanmışsa, tüm mesajları birleştirilmiş olarak tek bir talimat yanıtı gönderin.
184
+ - Aksi takdirde, izin yanıtı gönderin (boş stdout, çıkış 0).
185
185
 
186
186
  ---
187
187
 
188
- ## Yerleşik policiler
188
+ ## Yerleşik politikalar
189
189
 
190
- `src/hooks/builtin-policies.ts` 26 yerleşik policy'yi `BuiltinPolicyDefinition` nesneleri olarak tanımlar:
190
+ `src/hooks/builtin-policies.ts` tüm 26 yerleşik politikayı `BuiltinPolicyDefinition` nesneleri olarak tanımlar:
191
191
 
192
192
  ```typescript
193
193
  interface BuiltinPolicyDefinition {
@@ -205,15 +205,15 @@ interface BuiltinPolicyDefinition {
205
205
  }
206
206
  ```
207
207
 
208
- `params` kabul eden policiler, her parametre için türler ve varsayılanlar ile bir `PolicyParamsSchema` bildirirler. Policy değerlendiricisi çözümlenen değerleri `fn` çağrılmadan önce `ctx.params` içerisine enjekte eder. Policy fonksiyonları `ctx.params` okur, null kontrol etmez çünkü varsayılanlar her zaman önce uygulanır.
208
+ `params` kabul eden politikalar, her parametre için türler ve varsayılanları içeren bir `PolicyParamsSchema` bildirir. Politika değerlendiricisi `fn` çağrılmadan önce çözülmüş değerleri `ctx.params`'a enjekte eder. Politika işlevleri varsayılanlar her zaman önce uygulandığından `ctx.params` null-koruması olmadan okurlar.
209
209
 
210
- Policilerin içindeki desen eşleştirmesi, ham string eşleştirmesinde değil, ayrıştırılmış command token'larını (argv) kullanır. Bu, shell operatörü enjeksiyonu yoluyla bypass'ı engeller (örn. `sudo systemctl status *` için bir desen `;` ekleyerek bypass edilemez rm -rf /`).
210
+ Politikalar içindeki desen eşleştirmesi, ham dize eşleştirmesi değil, ayrıştırılmış komut belirteçlerini (argv) kullanır. Bu, shell operatörü enjeksiyonu yoluyla bypass'ı önler (örneğin `sudo systemctl status *` için bir desen `;`rm -rf /` ekleyerek bypass yapılamaz).
211
211
 
212
212
  ---
213
213
 
214
- ## Özel policiler
214
+ ## Özel politikalar
215
215
 
216
- `src/hooks/custom-hooks-registry.ts` `globalThis` destekli bir registry uygular:
216
+ `src/hooks/custom-hooks-registry.ts` bir `globalThis`-destekli kayıt defteri uygular:
217
217
 
218
218
  ```typescript
219
219
  const REGISTRY_KEY = "__failproofai_custom_hooks__";
@@ -223,28 +223,28 @@ export const customPolicies = {
223
223
  };
224
224
 
225
225
  export function getCustomHooks(): CustomHook[] { ... }
226
- export function clearCustomHooks(): void { ... } // used in tests
226
+ export function clearCustomHooks(): void { ... } // testlerde kullanılır
227
227
  ```
228
228
 
229
- `src/hooks/custom-hooks-loader.ts` kullanıcı policy dosyasını yükler:
229
+ `src/hooks/custom-hooks-loader.ts` kullanıcının politika dosyasını yükler:
230
230
 
231
- 1. Config'ten `customPoliciesPath` oku; yoksa atla.
232
- 2. Mutlak yola çöz; dosyayı kontrol et var mı.
233
- 3. Tüm `from "failproofai"` importlarını gerçek dist path'e yeniden yaz böylece `customPolicies` aynı `globalThis` registry'ye çözülür.
234
- 4. ESM uyumluluğunu sağlamak için geçişli yerel importları yinelemeli olarak yeniden yaz.
235
- 5. Geçici `.mjs` dosyaları yaz ve giriş dosyasını `import()` et.
236
- 6. Kayıtlı hook'ları almak için `getCustomHooks()` çağır.
237
- 7. Tüm temp dosyaları bir `finally` bloğunda temizle.
231
+ 1. Config'den `customPoliciesPath` okuyun; yoksa atla.
232
+ 2. Mutlak yola çözümlendirin; dosya varlığını kontrol edin.
233
+ 3. Tüm `from "failproofai"` ithalatlarını gerçek dağıtım yoluna yazarak `customPolicies`'in aynı `globalThis` kaydına çözümlenmesini sağla.
234
+ 4. ESM uyumluluğunu sağlamak için geçişli yerel ithalatları özyinelemeli olarak yazın.
235
+ 5. Geçici `.mjs` dosyaları yazın ve giriş dosyasını `import()` yapın.
236
+ 6. Kayıtlı kancaları almak için `getCustomHooks()` çağırın.
237
+ 7. Tüm geçici dosyaları bir `finally` bloğunda temizleyin.
238
238
 
239
- Herhangi bir hata (dosya bulunamadı, söz dizimi hatası, import başarısızlığı) durumunda, hata `~/.failproofai/hook.log` dosyasına kaydedilir ve loader boş bir dizi döner. Yerleşik policiler etkilenmez.
239
+ Herhangi bir hata durumunda (dosya bulunamadı, sözdizim hatası, ithalatçı hatası), hata `~/.failproofai/hook.log`'a günlüğe kaydedilir ve yükleyici boş bir dizi döndürür. Yerleşik politikalar etkilenmez.
240
240
 
241
- Özel policiler tüm yerleşik policilerden sonra değerlendirilir. Bir özel policy `deny` yine de diğer özel policileri kısa devreye soksa da (yerleşik policilerin tümü o noktada zaten çalıştırılmıştır).
241
+ Özel politikalar tüm yerleşik politikalardan sonra değerlendirilir. Özel bir politika `deny` yine sonraki özel politikaları kısa devre yapar (ancak o noktada tüm yerleşikler zaten çalıştırılmışlardır).
242
242
 
243
243
  ---
244
244
 
245
- ## Aktivite Logging
245
+ ## Aktivite günlüğü kaydı
246
246
 
247
- Her hook olayından sonra, handler `~/.failproofai/hook-activity.jsonl` dosyasına bir JSONL satırı ekler:
247
+ Her hook olayından sonra, yönetici `~/.failproofai/hook-activity.jsonl`'ye bir JSONL satırı ekler:
248
248
 
249
249
  ```json
250
250
  {
@@ -259,44 +259,44 @@ Her hook olayından sonra, handler `~/.failproofai/hook-activity.jsonl` dosyası
259
259
  }
260
260
  ```
261
261
 
262
- Non-allow kararı alan her policy için bir satır. Allow kararları kaydedilmez (dosya küçük tutmak için).
262
+ İzin vermeyen kararı alan her politika için bir satır. İzin verme kararları günlüğe kaydedilmez (dosyayı küçük tutmak için).
263
263
 
264
264
  ---
265
265
 
266
- ## Dashboard mimarisi
266
+ ## Panel mimarisi
267
267
 
268
- Dashboard, App Router ile React Server Components ve Server Actions kullanan bir **Next.js 16** uygulamasıdır.
268
+ Panel, React Server Components ve Server Actions kullanan App Router'ı içeren bir **Next.js 16** uygulamasıdır.
269
269
 
270
270
  ```text
271
271
  app/
272
- layout.tsx ← Root layout (theme, telemetry, nav)
273
- projects/page.tsx ← Server component: list all Claude projects
274
- project/[name]/page.tsx ← Server component: list sessions in a project
272
+ layout.tsx ← Kök düzeni (tema, telemetri, nav)
273
+ projects/page.tsx ← Sunucu bileşeni: tüm Claude projelerini listele
274
+ project/[name]/page.tsx ← Sunucu bileşeni: bir projedeki oturumları listele
275
275
  project/[name]/session/
276
- [sessionId]/page.tsx ← Server component: render session viewer
277
- policies/page.tsx ← Client component: policy management + activity log
276
+ [sessionId]/page.tsx ← Sunucu bileşeni: oturum görüntüleyici oluştur
277
+ policies/page.tsx ← İstemci bileşeni: politika yönetimi + aktivite günlüğü
278
278
  actions/
279
- get-hooks-config.ts ← Read config + policy list
280
- update-hooks-config.ts ← Toggle policy on/off
281
- update-policy-params.ts ← Update policy parameters
282
- get-hook-activity.ts ← Paginate/search activity log
283
- install-hooks-web.ts ← Install/remove hooks from the browser
279
+ get-hooks-config.ts ← Config + politika listesini oku
280
+ update-hooks-config.ts ← Politikayı aç/kapat
281
+ update-policy-params.ts ← Politika parametrelerini güncelle
282
+ get-hook-activity.ts ← Aktivite günlüğünü sayfalara ayır/ara
283
+ install-hooks-web.ts ← Tarayıcıdan kancaları kur/kaldır
284
284
  api/
285
- download/[project]/[session]/route.ts ← Export session as ZIP/JSONL
285
+ download/[project]/[session]/route.ts ← Oturumu ZIP/JSONL olarak dışa aktar
286
286
  ```
287
287
 
288
288
  **Veri akışı:**
289
289
 
290
- - Sayfa bileşenleri proje/oturum verilerini doğrudan dosya sisteminden okumak için `lib/projects.ts` ve `lib/log-entries.ts` çağırır (okumalar için API katmanı yok).
291
- - Policies sayfası tüm mutasyonlar (toggle, params güncelleme, install/remove) için Server Actions kullanır.
292
- - Oturum viewer'ı Claude'un JSONL transkript formatını ayrıştırır ve mesajlar ile tool çağrılarının bir zaman çizelgesini renderler.
290
+ - Sayfa bileşenleri, proje/oturum verilerini doğrudan dosya sisteminden okumak için `lib/projects.ts` ve `lib/log-entries.ts` çağırır (okumalar için API katmanı yoktur).
291
+ - Politikalar sayfası tüm mutasyonlar için Server Actions kullanır (aç/kapat, parametreler güncellemesi, kur/kaldır).
292
+ - Oturum görüntüleyeni Claude'un JSONL transkript biçimini ayrıştırır ve mesajlar ile araç çağrılarının bir zaman çizelgesini oluşturur.
293
293
 
294
294
  **Temel tasarım kararları:**
295
295
 
296
- - Veritabanı yok - tüm kalıcı state düz dosyalardadır (`~/.failproofai/`, `~/.claude/projects/`).
297
- - Mutasyonlar için Server Actions - CRUD işlemleri için REST API gerekli değil.
298
- - Okuma sayfaları için React Server Components - daha hızlı ilk yükleme, veri getirme için client bundle yok.
299
- - Client bileşenleri sadece etkileşimlilik gerekli yerlerde (policy toggle'ları, aktivite arama, log viewer).
296
+ - Veritabanı yok - tüm kalıcı durum düz dosyalardadır (`~/.failproofai/`, `~/.claude/projects/`).
297
+ - Mutasyonlar için Server Actions - CRUD işlemleri için REST API'ye gerek yok.
298
+ - Okuma sayfaları için React Server Components - daha hızlı ilk yükleme, veri getirme için istemci paketi yok.
299
+ - İstemci bileşenleri yalnızca etkileşimin gerekli olduğu yerlerde (politika aç/kapanır, aktivite araması, günlük görüntüleyici).
300
300
 
301
301
  ---
302
302
 
@@ -305,29 +305,29 @@ app/
305
305
  ```text
306
306
  failproofai/
307
307
  ├── bin/
308
- │ └── failproofai.mjs # CLI router (hook / dashboard / install / etc.)
308
+ │ └── failproofai.mjs # CLI yönlendiricisi (hook / panel / kurulum / vb.)
309
309
  ├── src/hooks/
310
- │ ├── handler.ts # Hook event pipeline
311
- │ ├── builtin-policies.ts # 26 policy definitions
312
- │ ├── policy-evaluator.ts # Policy execution engine
313
- │ ├── policy-registry.ts # Policy registration and lookup
314
- │ ├── policy-types.ts # TypeScript interfaces
315
- │ ├── hooks-config.ts # Multi-scope config loading
316
- │ ├── custom-hooks-registry.ts # globalThis-backed hook registry
317
- │ ├── custom-hooks-loader.ts # ESM loader for user JS hooks
318
- │ ├── manager.ts # install / remove / list operations
319
- │ ├── install-prompt.ts # Interactive policy selection prompt
320
- │ ├── hook-logger.ts # Logging to hook.log
321
- │ ├── hook-activity-store.ts # Persist activity to hook-activity.jsonl
322
- │ └── llm-client.ts # LLM API client (for AI-powered policies)
323
- ├── app/ # Next.js dashboard (pages + server actions)
324
- ├── lib/ # Shared utilities
325
- │ ├── projects.ts # Enumerate Claude projects from filesystem
326
- │ ├── log-entries.ts # Parse Claude transcript JSONL format
327
- │ ├── paths.ts # Resolve system paths
310
+ │ ├── handler.ts # Hook olay ardışık düzeni
311
+ │ ├── builtin-policies.ts # 26 politika tanımı
312
+ │ ├── policy-evaluator.ts # Politika yürütme motoru
313
+ │ ├── policy-registry.ts # Politika kaydı ve arama
314
+ │ ├── policy-types.ts # TypeScript arayüzleri
315
+ │ ├── hooks-config.ts # Çok kapsamlı config yükleme
316
+ │ ├── custom-hooks-registry.ts # globalThis-destekli kanca kaydı
317
+ │ ├── custom-hooks-loader.ts # Kullanıcı JS kankaları için ESM yükleyici
318
+ │ ├── manager.ts # kurulum / kaldırma / listeleme işlemleri
319
+ │ ├── install-prompt.ts # Etkileşimli politika seçim istemi
320
+ │ ├── hook-logger.ts # hook.log'a günlük kaydı
321
+ │ ├── hook-activity-store.ts # Aktiviteyi hook-activity.jsonl'ye kaydet
322
+ │ └── llm-client.ts # LLM API istemcisi (AI güçlendirilmiş politikalar için)
323
+ ├── app/ # Next.js paneli (sayfalar + sunucu eylemleri)
324
+ ├── lib/ # Paylaşılan yardımcılar
325
+ │ ├── projects.ts # Dosya sisteminden Claude projelerini listelendirme
326
+ │ ├── log-entries.ts # Claude transkript JSONL biçimini ayrıştırma
327
+ │ ├── paths.ts # Sistem yollarını çözümlendirme
328
328
  │ └── ...
329
- ├── components/ # Shared React UI components
330
- ├── contexts/ # React context providers (theme, auto-refresh, telemetry)
331
- ├── examples/ # Example custom hook files
332
- └── __tests__/ # Unit and E2E tests
329
+ ├── components/ # Paylaşılan React UI bileşenleri
330
+ ├── contexts/ # React bağlam sağlayıcıları (tema, otomatik yenileme, telemetri)
331
+ ├── examples/ # Örnek özel kanca dosyaları
332
+ └── __tests__/ # Birim ve E2E testleri
333
333
  ```
@@ -1,39 +1,38 @@
1
1
  ---
2
- ---
3
2
  title: Yapılandırma
4
- description: "Yapılandırma dosyası biçimi, üç kapsamlı sistem ve birleştirme kuralları"
3
+ description: "Konfigürasyon dosyası formatı, üç kapsamlı sistem ve birleştirme kuralları"
5
4
  icon: gear
6
5
  ---
7
6
 
8
- failproofai, hangi politikaların aktif olduğunu, nasıl davrandıklarını ve özel politikaların nereden yüklendiğini kontrol etmek için JSON yapılandırma dosyalarını kullanır. Yapılandırma, takımınızla paylaşmak için kolay olacak şekilde tasarlanmıştır - bunu deponuza gönderin ve her geliştirici aynı agent güvenlik ağını alır.
7
+ failproofai, hangi politikaların aktif olduğunu, nasıl davrandıklarını ve özel politikaların nereden yüklendiğini kontrol etmek için JSON konfigürasyon dosyalarını kullanır. Yapılandırma, ekibinizle paylaşmak için tasarlanmıştır - bunu deponuza gönderin ve her geliştirici aynı aracı güvenlik ağını alır.
9
8
 
10
9
  ---
11
10
 
12
11
  ## Yapılandırma kapsamları
13
12
 
14
- Üç yapılandırma kapsamı vardır ve öncelik sırasına göre değerlendirilirler:
13
+ Üç yapılandırma kapsamı vardır ve öncelik sırasına göre değerlendirilir:
15
14
 
16
15
  | Kapsam | Dosya yolu | Amaç |
17
16
  |-------|-----------|---------|
18
- | **project** | `.failproofai/policies-config.json` | Depo başına ayarlar, sürüm kontrolüne gönderilir |
19
- | **local** | `.failproofai/policies-config.local.json` | Kişisel depo başına geçersiz kılmalar, gitignore'da |
20
- | **global** | `~/.failproofai/policies-config.json` | Tüm projeler genelindeki kullanıcı düzeyindeki varsayılanlar |
17
+ | **project** | `.failproofai/policies-config.json` | Depo başına ayarlar, sürüm kontrolüne kaydedilir |
18
+ | **local** | `.failproofai/policies-config.local.json` | Kişisel depo başına geçersiz kılmalar, gitignored |
19
+ | **global** | `~/.failproofai/policies-config.json` | Tüm projeler genelinde kullanıcı düzeyinde varsayılanlar |
21
20
 
22
- failproofai bir hook olayı aldığında, geçerli çalışma dizini için var olan üç dosyanın tümünü yükler ve birleştirir.
21
+ failproofai bir hook olayı aldığında, mevcut çalışma dizini için var olan üç dosyayı da yükler ve birleştirir.
23
22
 
24
23
  ### Birleştirme kuralları
25
24
 
26
- **`enabledPolicies`** - üç kapsamın tümünün birleşimi. Herhangi bir düzeyde etkinleştirilen bir politika etkindir.
25
+ **`enabledPolicies`** - üç kapsamın tümünün birleşimi. Herhangi bir düzeyde etkinleştirilen bir politika aktiftir.
27
26
 
28
27
  ```text
29
28
  project: ["block-sudo"]
30
29
  local: ["block-rm-rf"]
31
30
  global: ["block-sudo", "sanitize-api-keys"]
32
31
 
33
- resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← tekilleştirilmiş birleşim
32
+ resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← yinelenenden arındırılmış birleşim
34
33
  ```
35
34
 
36
- **`policyParams`** - belirli bir politika için parametreleri tanımlayan ilk kapsam tamamen kazanır. Bir politikanın parametreleri içinde derin birleştirme yoktur.
35
+ **`policyParams`** - verilen bir politika için parametreleri tanımlayan ilk kapsam tamamen kazanır. Bir politikanın parametreleri içindeki değerlerin derin birleştirilmesi yoktur.
37
36
 
38
37
  ```text
39
38
  project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
@@ -43,11 +42,11 @@ resolved: { allowPatterns: ["sudo apt-get update"] } ← project kazanır, glo
43
42
  ```
44
43
 
45
44
  ```text
46
- project: (block-sudo girdisi yok)
47
- local: (block-sudo girdisi yok)
45
+ project: (block-sudo girişi yok)
46
+ local: (block-sudo girişi yok)
48
47
  global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
49
48
 
50
- resolved: { allowPatterns: ["sudo systemctl status"] } ← global'e düşer
49
+ resolved: { allowPatterns: ["sudo systemctl status"] } ← global'a düşer
51
50
  ```
52
51
 
53
52
  **`customPoliciesPath`** - onu tanımlayan ilk kapsam kazanır.
@@ -56,7 +55,7 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← global'e düşer
56
55
 
57
56
  ---
58
57
 
59
- ## Yapılandırma dosyası biçimi
58
+ ## Konfigürasyon dosyası formatı
60
59
 
61
60
  ```json
62
61
  {
@@ -97,31 +96,31 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← global'e düşer
97
96
 
98
97
  ---
99
98
 
100
- ## Alan başvurusu
99
+ ## Alan referansı
101
100
 
102
101
  ### `enabledPolicies`
103
102
 
104
- Tür: `string[]`
103
+ Tip: `string[]`
105
104
 
106
105
  Etkinleştirilecek politika adlarının listesi. Adlar, `failproofai policies` tarafından gösterilen politika tanımlayıcılarıyla tam olarak eşleşmelidir. Tam liste için [Yerleşik Politikalar](/tr/built-in-policies) bölümüne bakın.
107
106
 
108
- `enabledPolicies` içinde olmayan politikalar, `policyParams` içinde girdileri olsa bile etkin değildir.
107
+ `enabledPolicies` içinde olmayan politikalar, `policyParams` içinde girişleri olsa bile inaktiftir.
109
108
 
110
109
  ### `policyParams`
111
110
 
112
- Tür: `Record<string, Record<string, unknown>>`
111
+ Tip: `Record<string, Record<string, unknown>>`
113
112
 
114
- Politika başına parametre geçersiz kılmaları. Dış anahtar politika adıdır; iç anahtarlar politikaya özgüdür. Her politika, mevcut parametrelerini [Yerleşik Politikalar](/tr/built-in-policies) içinde belgelemir.
113
+ Politika başına parametre geçersiz kılmaları. Dış anahtar politika adıdır; iç anahtarlar politikaya özgüdür. Her politika, mevcut parametrelerini [Yerleşik Politikalar](/tr/built-in-policies) bölümünde belgeler.
115
114
 
116
- Bir politikanın parametreleri varsa ancak bunları belirtmezseniz, politikanın yerleşik varsayılanları kullanılır. `policyParams` yapılandırırmayan kullanıcılar önceki sürümlerle aynı davranışı alırlar.
115
+ Bir politikanın parametreleri varsa ancak bunları belirtmezseniz, politikanın yerleşik varsayılanları kullanılır. `policyParams` hiç yapılandırmayan kullanıcılar, önceki sürümlerle aynı davranışı alırlar.
117
116
 
118
- Bir politikanın params bloğu içindeki bilinmeyen anahtarlar, hook tetiklendiğinde sessizce yoksayılır ancak `failproofai policies` çalıştırdığınızda uyarılar olarak işaretlenir.
117
+ Bir politikanın parametreleri bloğu içindeki bilinmeyen anahtarlar, hook tetiklendiğinde sessizce yoksayılır ancak `failproofai policies` çalıştırdığınızda uyarılar olarak işaretlenir.
119
118
 
120
119
  #### `hint` (çapraz kesme)
121
120
 
122
- Tür: `string` (isteğe bağlı)
121
+ Tip: `string` (isteğe bağlı)
123
122
 
124
- Bir politika `deny` veya `instruct` döndürdüğünde nedene eklenen bir ileti. Bunu, politikanın kendisini değiştirmeden Claude'a işlem yapılabilir rehberlik sağlamak için kullanın.
123
+ Bir politika `deny` veya `instruct` döndürdüğünde nedene eklenen bir mesaj. Politikanın kendisini değiştirmeden Claude'a işlenebilir rehberlik vermek için kullanın.
125
124
 
126
125
  Herhangi bir politika türüyle çalışır — yerleşik, özel (`custom/`), proje kuralı (`.failproofai-project/`) veya kullanıcı kuralı (`.failproofai-user/`).
127
126
 
@@ -133,49 +132,49 @@ Herhangi bir politika türüyle çalışır — yerleşik, özel (`custom/`), pr
133
132
  },
134
133
  "block-sudo": {
135
134
  "allowPatterns": ["sudo apt-get"],
136
- "hint": "sudo olmadan apt-get'i doğrudan kullanın."
135
+ "hint": "sudo olmadan doğrudan apt-get kullanın."
137
136
  },
138
137
  "custom/my-policy": {
139
- "hint": "Önce kullanıcıdan onay alın."
138
+ "hint": "Önce kullanıcıdan onay isteyin."
140
139
  }
141
140
  }
142
141
  }
143
142
  ```
144
143
 
145
- `block-force-push` reddettiğinde, Claude şunu görür: *"Zorla push yapmak engelleniyor. Bunun yerine yeni bir dal oluşturmayı deneyin."*
144
+ `block-force-push` reddettiğinde, Claude şunu görür: *"Force-pushing bloke edildi. Bunun yerine yeni bir dal oluşturmayı deneyin."*
146
145
 
147
- String olmayan değerler ve boş diziler sessizce yoksayılır. `hint` ayarlanmazsa, davranış değişmez (geriye dönük uyumlu).
146
+ String olmayan değerler ve boş dizeler sessizce yoksayılır. `hint` ayarlanmamışsa, davranış değişmez (geriye dönük uyumlu).
148
147
 
149
148
  ### `customPoliciesPath`
150
149
 
151
- Tür: `string` (mutlak yol)
150
+ Tip: `string` (mutlak yol)
152
151
 
153
- Özel hook politikalarını içeren JavaScript dosyasının yolu. Bu, `failproofai policies --install --custom <path>` tarafından otomatik olarak ayarlanır (yol depolanmadan önce mutlak olarak çözülür).
152
+ Özel hook politikaları içeren JavaScript dosyasının yolu. Bu, `failproofai policies --install --custom <path>` tarafından otomatik olarak ayarlanır (yol depolanmadan önce mutlaka çözülür).
154
153
 
155
- Dosya her hook olayında yeniden yüklenir - önbelleğe alma yoktur. Yazma ayrıntıları için [Özel Politikalar](/tr/custom-policies) bölümüne bakın.
154
+ Dosya her hook olayında yeniden yüklenir - önbelleğe alma yoktur. Yazma detayları için [Özel Politikalar](/tr/custom-policies) bölümüne bakın.
156
155
 
157
156
  ### Kural tabanlı politikalar
158
157
 
159
- Açık `customPoliciesPath` öğesine ek olarak, failproofai `.failproofai/policies/` dizinlerinden policy dosyalarını otomatik olarak keşfeder ve yükler:
158
+ Açık `customPoliciesPath` ek olarak, failproofai `.failproofai/policies/` dizinlerinden politika dosyalarını otomatik olarak keşfeder ve yükler:
160
159
 
161
160
  | Düzey | Dizin | Kapsam |
162
161
  |-------|-----------|-------|
163
- | Proje | `.failproofai/policies/` | Sürüm kontrolü aracılığıyla takımla paylaşılır |
164
- | Kullanıcı | `~/.failproofai/policies/` | Kişisel, tüm projelere uygulanır |
162
+ | Proje | `.failproofai/policies/` | Sürüm kontrolü aracılığıyla ekiple paylaşılır |
163
+ | Kullanıcı | `~/.failproofai/policies/` | Kişisel, tüm projeler için geçerli |
165
164
 
166
- **Dosya eşleştirmesi:** Yalnızca `*policies.{js,mjs,ts}` ile eşleşen dosyalar yüklenir (ör. `security-policies.mjs`, `workflow-policies.js`). Dizindeki diğer dosyalar yoksayılır.
165
+ **Dosya eşleştirme:** Yalnızca `*policies.{js,mjs,ts}` ile eşleşen dosyalar yüklenir (ör. `security-policies.mjs`, `workflow-policies.js`). Dizindeki diğer dosyalar yoksayılır.
167
166
 
168
- **Yapılandırma gerekli değil:** Kural politikaları `policies-config.json` içinde girdiler gerektirmez. Dosyaları dizine bırakın ve sonraki hook olayında seçilecektir.
167
+ **Config gerekmez:** Kural politikaları `policies-config.json` içinde giriş gerektirmez. Dosyaları dizine bırakın ve sonraki hook olayında alınırlar.
169
168
 
170
- **Birleşim yükleme:** Hem proje hem de kullanıcı kural dizinleri taranır. Her iki düzeydeki tüm eşleşen dosyalar yüklenir (`customPoliciesPath` ilk kapsam kazanır kullandığından farklı olarak).
169
+ **Birleşim yüklemesi:** Hem proje hem de kullanıcı kural dizinleri taranır. Her iki düzeyden de eşleşen tüm dosyalar yüklenir (`customPoliciesPath` ilk kapsam kazanır kullanan aksine).
171
170
 
172
- Daha fazla ayrıntı ve örnek için [Özel Politikalar](/tr/custom-policies) bölümüne bakın.
171
+ Daha fazla ayrıntı ve örnekler için [Özel Politikalar](/tr/custom-policies) bölümüne bakın.
173
172
 
174
173
  ### `llm`
175
174
 
176
- Tür: `object` (isteğe bağlı)
175
+ Tip: `object` (isteğe bağlı)
177
176
 
178
- AI çağrıları yapan politikalar için LLM istemci yapılandırması. Çoğu kurulum için gerekli değil.
177
+ AI çağrıları yapan politikalar için LLM istemci yapılandırması. Çoğu kurulum için gerekli değildir.
179
178
 
180
179
  ```json
181
180
  {
@@ -190,16 +189,16 @@ AI çağrıları yapan politikalar için LLM istemci yapılandırması. Çoğu k
190
189
 
191
190
  ## CLI'dan yapılandırmayı yönetme
192
191
 
193
- `policies --install` ve `policies --uninstall` komutları Claude Code'un `settings.json` dosyasına yazarken (hook giriş noktaları), `policies-config.json` doğrudan yönettiğiniz dosyadır. İkisi ayrıdır:
192
+ `policies --install` ve `policies --uninstall` komutları Claude Code'un `settings.json` dosyasına (hook giriş noktaları) yazarken, `policies-config.json` doğrudan yönettiğiniz dosyadır. İkisi ayrıdır:
194
193
 
195
- - **`settings.json`** - Claude Code'a her tool kullanımında `failproofai --hook <event>` çağırmasını söyler
196
- - **`policies-config.json`** - failproofai'ye hangi politikaları değerlendireceğini ve hangi parametrelerle değerlendireceğini söyler
194
+ - **`settings.json`** - Claude Code'a her araç kullanımında `failproofai --hook <event>` çağırmasını söyler
195
+ - **`policies-config.json`** - failproofai'ye hangi politikaları değerlendireceğini ve ne parametre ile değerlendireceğini söyler
197
196
 
198
- `policies-config.json` dosyasını herhangi bir zamanda doğrudan düzenleyebilirsiniz; değişiklikler yeniden başlatmaya gerek kalmadan sonraki hook olayında geçerli olur.
197
+ `policies-config.json` dosyasını dilediğiniz zaman doğrudan düzenleyebilirsiniz; değişiklikler yeniden başlatmaya gerek olmadan sonraki hook olayında etkilenir.
199
198
 
200
199
  ---
201
200
 
202
- ## Örnek: takım varsayılanları ile proje düzeyindeki yapılandırma
201
+ ## Örnek: takım varsayılanları ile proje düzeyi config
203
202
 
204
203
  `.failproofai/policies-config.json` dosyasını deponuza gönderin:
205
204
 
@@ -220,4 +219,4 @@ AI çağrıları yapan politikalar için LLM istemci yapılandırması. Çoğu k
220
219
  }
221
220
  ```
222
221
 
223
- Ardından her geliştirici, takım arkadaşlarını etkilemeden kişisel geçersiz kılmalar için `.failproofai/policies-config.local.json` (gitignore'da) oluşturabilir.
222
+ Her geliştirici, ekip arkadaşlarını etkilemeden kişisel geçersiz kılmalar için `.failproofai/policies-config.local.json` (gitignored) oluşturabilir.