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.
- package/.next/standalone/.failproofai/policies/review-policies.mjs +112 -0
- package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a~g15g._.js → [root-of-the-server]__0rh.18_._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +6 -6
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qn95h3._.js → [root-of-the-server]__0~kmh8w._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
- package/.next/standalone/.next/static/chunks/{0sme4lkv.tgn-.js → 01b~z8f1ws0rk.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0lgbwkfqmnsmc.js → 03rz6ykw-a2xi.js} +1 -1
- package/.next/standalone/.next/static/chunks/{17manv47o-~wp.js → 08t08igdql9yt.js} +1 -1
- package/.next/standalone/.next/static/chunks/09_k80d~cq2wg.js +4 -0
- package/.next/standalone/.next/static/chunks/{0ksdlt_1hucdm.js → 0bvhsa6zva2o..js} +1 -1
- package/.next/standalone/.next/static/chunks/{09ikntpt2-o9b.js → 0gbf4cphy8ksq.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0yumumfzx_f27.js → 0v.yd0kg_ld3r.js} +1 -1
- package/.next/standalone/.next/static/chunks/{13juklu.vksks.js → 0wlyoif4_kj_t.js} +1 -1
- package/.next/standalone/.next/static/chunks/{09e7drilkf1sn.js → 12simlrcfk3g2.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0em7tspi4kylh.js → 12~yi9oj8av8p.js} +2 -2
- package/.next/standalone/.next/static/chunks/{turbopack-0r26pc8h0y_-e.js → turbopack-0o7k.hakttp4k.js} +1 -1
- package/.next/standalone/CHANGELOG.md +13 -0
- package/.next/standalone/README.md +2 -2
- package/.next/standalone/bun.lock +43 -85
- package/.next/standalone/dist/cli.mjs +107 -3
- package/.next/standalone/docs/ar/architecture.mdx +65 -64
- package/.next/standalone/docs/ar/configuration.mdx +42 -42
- package/.next/standalone/docs/ar/custom-policies.mdx +62 -64
- package/.next/standalone/docs/built-in-policies.mdx +37 -0
- package/.next/standalone/docs/custom-policies.mdx +1 -1
- package/.next/standalone/docs/de/architecture.mdx +92 -92
- package/.next/standalone/docs/de/configuration.mdx +34 -34
- package/.next/standalone/docs/de/custom-policies.mdx +49 -50
- package/.next/standalone/docs/es/architecture.mdx +72 -72
- package/.next/standalone/docs/es/configuration.mdx +25 -25
- package/.next/standalone/docs/es/custom-policies.mdx +48 -49
- package/.next/standalone/docs/examples.mdx +54 -0
- package/.next/standalone/docs/fr/architecture.mdx +53 -53
- package/.next/standalone/docs/fr/configuration.mdx +25 -25
- package/.next/standalone/docs/fr/custom-policies.mdx +42 -43
- package/.next/standalone/docs/getting-started.mdx +52 -0
- package/.next/standalone/docs/he/architecture.mdx +66 -66
- package/.next/standalone/docs/he/configuration.mdx +53 -52
- package/.next/standalone/docs/he/custom-policies.mdx +72 -73
- package/.next/standalone/docs/hi/architecture.mdx +106 -106
- package/.next/standalone/docs/hi/configuration.mdx +39 -39
- package/.next/standalone/docs/hi/custom-policies.mdx +75 -76
- package/.next/standalone/docs/i18n/README.ar.md +66 -66
- package/.next/standalone/docs/i18n/README.de.md +38 -38
- package/.next/standalone/docs/i18n/README.es.md +38 -38
- package/.next/standalone/docs/i18n/README.fr.md +42 -42
- package/.next/standalone/docs/i18n/README.he.md +67 -67
- package/.next/standalone/docs/i18n/README.hi.md +70 -70
- package/.next/standalone/docs/i18n/README.it.md +62 -62
- package/.next/standalone/docs/i18n/README.ja.md +54 -54
- package/.next/standalone/docs/i18n/README.ko.md +58 -58
- package/.next/standalone/docs/i18n/README.pt-br.md +43 -43
- package/.next/standalone/docs/i18n/README.ru.md +69 -69
- package/.next/standalone/docs/i18n/README.tr.md +76 -76
- package/.next/standalone/docs/i18n/README.vi.md +70 -70
- package/.next/standalone/docs/i18n/README.zh.md +52 -52
- package/.next/standalone/docs/it/architecture.mdx +54 -53
- package/.next/standalone/docs/it/configuration.mdx +44 -45
- package/.next/standalone/docs/it/custom-policies.mdx +76 -78
- package/.next/standalone/docs/ja/architecture.mdx +93 -93
- package/.next/standalone/docs/ja/configuration.mdx +47 -47
- package/.next/standalone/docs/ja/custom-policies.mdx +62 -63
- package/.next/standalone/docs/ko/architecture.mdx +66 -66
- package/.next/standalone/docs/ko/configuration.mdx +35 -35
- package/.next/standalone/docs/ko/custom-policies.mdx +71 -72
- package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
- package/.next/standalone/docs/pt-br/configuration.mdx +35 -35
- package/.next/standalone/docs/pt-br/custom-policies.mdx +60 -61
- package/.next/standalone/docs/ru/architecture.mdx +59 -60
- package/.next/standalone/docs/ru/configuration.mdx +52 -53
- package/.next/standalone/docs/ru/custom-policies.mdx +68 -69
- package/.next/standalone/docs/tr/architecture.mdx +124 -124
- package/.next/standalone/docs/tr/configuration.mdx +45 -46
- package/.next/standalone/docs/tr/custom-policies.mdx +75 -75
- package/.next/standalone/docs/vi/architecture.mdx +65 -64
- package/.next/standalone/docs/vi/configuration.mdx +41 -41
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -69
- package/.next/standalone/docs/zh/architecture.mdx +67 -67
- package/.next/standalone/docs/zh/configuration.mdx +34 -34
- package/.next/standalone/docs/zh/custom-policies.mdx +53 -54
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/config-schema.js +10 -2
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/render.js +27 -20
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +15 -15
- package/.next/standalone/package.json +2 -2
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/hooks/builtin-policies.ts +131 -0
- package/README.md +2 -2
- package/dist/cli.mjs +107 -3
- package/package.json +2 -2
- package/src/hooks/builtin-policies.ts +131 -0
- package/.next/standalone/.next/static/chunks/0_yayar~bpphd.js +0 -4
- /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_clientMiddlewareManifest.js +0 -0
- /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
|
|
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
|
|
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
|
|
14
|
+
failproofai iki bağımsız alt sisteme sahiptir:
|
|
15
15
|
|
|
16
|
-
1. **Hook
|
|
17
|
-
2. **Agent Monitor (
|
|
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/`
|
|
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
|
|
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
|
|
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
|
-
###
|
|
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,
|
|
64
|
+
`PostToolUse` olayları için, yük ayrıca aracın çıktısını içeren `tool_result` içerir.
|
|
65
65
|
|
|
66
|
-
|
|
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
|
|
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
|
|
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
|
|
98
|
+
**Stop olay talimatı:**
|
|
99
99
|
- Çıkış kodu: `2`
|
|
100
|
-
-
|
|
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
|
-
**İ
|
|
106
|
+
**İletili mesaj ile İzin Ver:**
|
|
107
107
|
|
|
108
|
-
`allow(message)
|
|
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
|
|
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
|
|
119
|
-
- Birden
|
|
120
|
-
- Hiçbir
|
|
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
|
|
122
|
+
### İşleme ardışık düzeni
|
|
123
123
|
|
|
124
|
-
`src/hooks/handler.ts` tam
|
|
124
|
+
`src/hooks/handler.ts` tam ardışık düzeni uygular:
|
|
125
125
|
|
|
126
126
|
```text
|
|
127
127
|
stdin JSON
|
|
128
|
-
→
|
|
129
|
-
→
|
|
130
|
-
→ readMergedHooksConfig(cwd) ←
|
|
131
|
-
→
|
|
132
|
-
→
|
|
133
|
-
→
|
|
134
|
-
→
|
|
135
|
-
→
|
|
136
|
-
→
|
|
137
|
-
→
|
|
138
|
-
→
|
|
139
|
-
→
|
|
140
|
-
→
|
|
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
|
-
|
|
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
|
-
##
|
|
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 ←
|
|
153
|
-
[2] {cwd}/.failproofai/policies-config.local.json ←
|
|
154
|
-
[3] ~/.failproofai/policies-config.json ←
|
|
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
|
|
159
|
-
- `policyParams` -
|
|
160
|
-
- `customPoliciesPath` -
|
|
161
|
-
- `llm` -
|
|
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
|
|
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
|
-
##
|
|
167
|
+
## Politika değerlendirmesi
|
|
168
168
|
|
|
169
|
-
`src/hooks/policy-evaluator.ts`
|
|
169
|
+
`src/hooks/policy-evaluator.ts` politikaları sırayla çalıştırır.
|
|
170
170
|
|
|
171
|
-
Her
|
|
171
|
+
Her politika için:
|
|
172
172
|
|
|
173
|
-
1.
|
|
174
|
-
2. Birleştirilmiş config'
|
|
175
|
-
3.
|
|
176
|
-
4.
|
|
177
|
-
5. Sonuç `deny` ise, hemen
|
|
178
|
-
6. Sonuç `instruct` ise, mesajı
|
|
179
|
-
7. Sonuç `allow` ise, sonraki
|
|
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
|
|
182
|
-
- Herhangi bir `deny`
|
|
183
|
-
- Herhangi bir `instruct` dönüşü toplanmışsa, tüm
|
|
184
|
-
- Aksi
|
|
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
|
|
188
|
+
## Yerleşik politikalar
|
|
189
189
|
|
|
190
|
-
`src/hooks/builtin-policies.ts` 26 yerleşik
|
|
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
|
|
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
|
-
|
|
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
|
|
214
|
+
## Özel politikalar
|
|
215
215
|
|
|
216
|
-
`src/hooks/custom-hooks-registry.ts` `globalThis
|
|
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 { ... } //
|
|
226
|
+
export function clearCustomHooks(): void { ... } // testlerde kullanılır
|
|
227
227
|
```
|
|
228
228
|
|
|
229
|
-
`src/hooks/custom-hooks-loader.ts`
|
|
229
|
+
`src/hooks/custom-hooks-loader.ts` kullanıcının politika dosyasını yükler:
|
|
230
230
|
|
|
231
|
-
1. Config'
|
|
232
|
-
2. Mutlak yola
|
|
233
|
-
3. Tüm `from "failproofai"`
|
|
234
|
-
4. ESM uyumluluğunu sağlamak için geçişli yerel
|
|
235
|
-
5. Geçici `.mjs` dosyaları
|
|
236
|
-
6. Kayıtlı
|
|
237
|
-
7. Tüm
|
|
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ı,
|
|
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
|
|
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
|
|
245
|
+
## Aktivite günlüğü kaydı
|
|
246
246
|
|
|
247
|
-
Her hook olayından sonra,
|
|
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
|
-
|
|
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
|
-
##
|
|
266
|
+
## Panel mimarisi
|
|
267
267
|
|
|
268
|
-
|
|
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 ←
|
|
273
|
-
projects/page.tsx ←
|
|
274
|
-
project/[name]/page.tsx ←
|
|
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 ←
|
|
277
|
-
policies/page.tsx ←
|
|
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 ←
|
|
280
|
-
update-hooks-config.ts ←
|
|
281
|
-
update-policy-params.ts ←
|
|
282
|
-
get-hook-activity.ts ←
|
|
283
|
-
install-hooks-web.ts ←
|
|
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 ←
|
|
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ı
|
|
291
|
-
-
|
|
292
|
-
- Oturum
|
|
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ı
|
|
297
|
-
- Mutasyonlar için Server Actions - CRUD işlemleri için REST API
|
|
298
|
-
- Okuma sayfaları için React Server Components - daha hızlı ilk yükleme, veri getirme için
|
|
299
|
-
-
|
|
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
|
|
308
|
+
│ └── failproofai.mjs # CLI yönlendiricisi (hook / panel / kurulum / vb.)
|
|
309
309
|
├── src/hooks/
|
|
310
|
-
│ ├── handler.ts # Hook
|
|
311
|
-
│ ├── builtin-policies.ts # 26
|
|
312
|
-
│ ├── policy-evaluator.ts #
|
|
313
|
-
│ ├── policy-registry.ts #
|
|
314
|
-
│ ├── policy-types.ts # TypeScript
|
|
315
|
-
│ ├── hooks-config.ts #
|
|
316
|
-
│ ├── custom-hooks-registry.ts # globalThis-
|
|
317
|
-
│ ├── custom-hooks-loader.ts #
|
|
318
|
-
│ ├── manager.ts #
|
|
319
|
-
│ ├── install-prompt.ts #
|
|
320
|
-
│ ├── hook-logger.ts #
|
|
321
|
-
│ ├── hook-activity-store.ts #
|
|
322
|
-
│ └── llm-client.ts # LLM API
|
|
323
|
-
├── app/ # Next.js
|
|
324
|
-
├── lib/ #
|
|
325
|
-
│ ├── projects.ts #
|
|
326
|
-
│ ├── log-entries.ts #
|
|
327
|
-
│ ├── paths.ts #
|
|
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/ #
|
|
330
|
-
├── contexts/ # React
|
|
331
|
-
├── examples/ #
|
|
332
|
-
└── __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: "
|
|
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
|
|
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
|
|
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
|
|
19
|
-
| **local** | `.failproofai/policies-config.local.json` | Kişisel depo başına geçersiz kılmalar,
|
|
20
|
-
| **global** | `~/.failproofai/policies-config.json` | Tüm projeler
|
|
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,
|
|
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
|
|
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"] ←
|
|
32
|
+
resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← yinelenenden arındırılmış birleşim
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
**`policyParams`** -
|
|
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
|
|
47
|
-
local: (block-sudo
|
|
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'
|
|
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
|
-
##
|
|
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
|
|
99
|
+
## Alan referansı
|
|
101
100
|
|
|
102
101
|
### `enabledPolicies`
|
|
103
102
|
|
|
104
|
-
|
|
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
|
|
107
|
+
`enabledPolicies` içinde olmayan politikalar, `policyParams` içinde girişleri olsa bile inaktiftir.
|
|
109
108
|
|
|
110
109
|
### `policyParams`
|
|
111
110
|
|
|
112
|
-
|
|
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)
|
|
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`
|
|
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
|
|
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
|
-
|
|
121
|
+
Tip: `string` (isteğe bağlı)
|
|
123
122
|
|
|
124
|
-
Bir politika `deny` veya `instruct` döndürdüğünde nedene eklenen bir
|
|
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
|
|
135
|
+
"hint": "sudo olmadan doğrudan apt-get kullanın."
|
|
137
136
|
},
|
|
138
137
|
"custom/my-policy": {
|
|
139
|
-
"hint": "Önce kullanıcıdan onay
|
|
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: *"
|
|
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ş
|
|
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
|
-
|
|
150
|
+
Tip: `string` (mutlak yol)
|
|
152
151
|
|
|
153
|
-
Özel hook
|
|
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
|
|
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`
|
|
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
|
|
164
|
-
| Kullanıcı | `~/.failproofai/policies/` | Kişisel, tüm
|
|
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
|
|
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
|
-
**
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
196
|
-
- **`policies-config.json`** - failproofai'ye hangi politikaları değerlendireceğini ve
|
|
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ı
|
|
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
|
|
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
|
-
|
|
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.
|