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,44 +1,45 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
---
|
|
3
|
+
title: הגדרות
|
|
4
|
+
description: "פורמט קובץ הגדרות, מערכת שלוש-רמות, וכללי מיזוג"
|
|
4
5
|
icon: gear
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
failproofai משתמש בקובצי
|
|
8
|
+
failproofai משתמש בקובצי הגדרות JSON כדי לשלוט איזו מדיניויות פעילות, כיצד הן מתנהגות, ומאיפה מדיניויות מותאמות אישית נטענות. ההגדרות עוצבו כדי להיות קלות לשיתוף עם הצוות שלך - בצע commit לריפו שלך וכל מפתח יקבל את אותה רשת בטיחות לסוכנים.
|
|
8
9
|
|
|
9
10
|
---
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## יקפי הגדרות
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
יש שלוש רמות הגדרות, המוערכות לפי סדר עדיפויות:
|
|
14
15
|
|
|
15
|
-
|
|
|
16
|
+
| רמה | נתיב קובץ | מטרה |
|
|
16
17
|
|-------|-----------|---------|
|
|
17
|
-
| **פרויקט** | `.failproofai/policies-config.json` | הגדרות
|
|
18
|
-
| **מקומי** | `.failproofai/policies-config.local.json` | עדכונים אישיים
|
|
18
|
+
| **פרויקט** | `.failproofai/policies-config.json` | הגדרות לפי-ריפו, בהתחייבות לשליטה בגרסיות |
|
|
19
|
+
| **מקומי** | `.failproofai/policies-config.local.json` | עדכונים אישיים לפי-ריפו, מפורסמים ל-gitignore |
|
|
19
20
|
| **גלובלי** | `~/.failproofai/policies-config.json` | ברירות מחדל ברמת משתמש בכל הפרויקטים |
|
|
20
21
|
|
|
21
|
-
כאשר failproofai מקבל אירוע hook, הוא טוען ומיזג את
|
|
22
|
+
כאשר failproofai מקבל אירוע hook, הוא טוען ומיזג את שלושת הקובצים הקיימים לספריית העבודה הנוכחית.
|
|
22
23
|
|
|
23
24
|
### כללי מיזוג
|
|
24
25
|
|
|
25
|
-
**`enabledPolicies`** -
|
|
26
|
+
**`enabledPolicies`** - האיחוד של כל שלוש הרמות. מדיניות המופעלת בכל רמה היא פעילה.
|
|
26
27
|
|
|
27
28
|
```text
|
|
28
29
|
project: ["block-sudo"]
|
|
29
30
|
local: ["block-rm-rf"]
|
|
30
31
|
global: ["block-sudo", "sanitize-api-keys"]
|
|
31
32
|
|
|
32
|
-
resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ←
|
|
33
|
+
resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← deduplicated union
|
|
33
34
|
```
|
|
34
35
|
|
|
35
|
-
**`policyParams`** -
|
|
36
|
+
**`policyParams`** - הרמה הראשונה המגדירה params עבור מדיניות מסוימת זוכה לחלוטין. אין מיזוג עמוק של ערכים בתוך ה-params של מדיניות.
|
|
36
37
|
|
|
37
38
|
```text
|
|
38
39
|
project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
|
|
39
40
|
global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
|
|
40
41
|
|
|
41
|
-
resolved: { allowPatterns: ["sudo apt-get update"] } ←
|
|
42
|
+
resolved: { allowPatterns: ["sudo apt-get update"] } ← project wins, global ignored
|
|
42
43
|
```
|
|
43
44
|
|
|
44
45
|
```text
|
|
@@ -46,16 +47,16 @@ project: (no block-sudo entry)
|
|
|
46
47
|
local: (no block-sudo entry)
|
|
47
48
|
global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
|
|
48
49
|
|
|
49
|
-
resolved: { allowPatterns: ["sudo systemctl status"] } ←
|
|
50
|
+
resolved: { allowPatterns: ["sudo systemctl status"] } ← falls through to global
|
|
50
51
|
```
|
|
51
52
|
|
|
52
|
-
**`customPoliciesPath`** -
|
|
53
|
+
**`customPoliciesPath`** - הרמה הראשונה המגדירה זאת זוכה.
|
|
53
54
|
|
|
54
|
-
**`llm`** -
|
|
55
|
+
**`llm`** - הרמה הראשונה המגדירה זאת זוכה.
|
|
55
56
|
|
|
56
57
|
---
|
|
57
58
|
|
|
58
|
-
## פורמט קובץ
|
|
59
|
+
## פורמט קובץ הגדרות
|
|
59
60
|
|
|
60
61
|
```json
|
|
61
62
|
{
|
|
@@ -96,33 +97,33 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← נופל דרך לג
|
|
|
96
97
|
|
|
97
98
|
---
|
|
98
99
|
|
|
99
|
-
##
|
|
100
|
+
## הפניית שדות
|
|
100
101
|
|
|
101
102
|
### `enabledPolicies`
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
Type: `string[]`
|
|
104
105
|
|
|
105
|
-
רשימת שמות מדיניויות להפעלה.
|
|
106
|
+
רשימת שמות מדיניויות להפעלה. השמות חייבים להתאים בדיוק למזהי המדיניות המוצגים על ידי `failproofai policies`. ראה [Built-in Policies](/he/built-in-policies) לרשימה המלאה.
|
|
106
107
|
|
|
107
|
-
מדיניויות שאינן ב-`enabledPolicies` אינן פעילות, גם אם יש להן
|
|
108
|
+
מדיניויות שאינן ב-`enabledPolicies` אינן פעילות, גם אם יש להן ערכים ב-`policyParams`.
|
|
108
109
|
|
|
109
110
|
### `policyParams`
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
Type: `Record<string, Record<string, unknown>>`
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
עדכונים בפרמטרים לפי-מדיניות. המפתח החיצוני הוא שם המדיניות; המפתחות הפנימיים הם ספציפיים למדיניות. כל מדיניות מתעדת את הפרמטרים הזמינים שלה ב-[Built-in Policies](/he/built-in-policies).
|
|
114
115
|
|
|
115
|
-
אם למדיניות יש פרמטרים אך אתה לא מציין אותם, משתמשים בברירות המחדל המובנות של המדיניות. משתמשים שלא מגדירים
|
|
116
|
+
אם למדיניות יש פרמטרים אך אתה לא מציין אותם, משתמשים בברירות המחדל המובנות של המדיניות. משתמשים שלא מגדירים `policyParams` בכלל מקבלים התנהגות זהה לגרסאות קודמות.
|
|
116
117
|
|
|
117
|
-
מפתחות לא ידועים בתוך בלוק
|
|
118
|
+
מפתחות לא ידועים בתוך בלוק params של מדיניות מתעלמים בשתיקה בזמן הפעלת hook אך מסומנים כאזהרות כאשר אתה מריץ `failproofai policies`.
|
|
118
119
|
|
|
119
|
-
#### `hint` (
|
|
120
|
+
#### `hint` (cross-cutting)
|
|
120
121
|
|
|
121
|
-
|
|
122
|
+
Type: `string` (optional)
|
|
122
123
|
|
|
123
|
-
הודעה
|
|
124
|
+
הודעה המוצמדת לסיבה כאשר מדיניות מחזירה `deny` או `instruct`. השתמש בה כדי לתת ל-Claude הנחיות פעולה ללא שינוי של המדיניות עצמה.
|
|
124
125
|
|
|
125
|
-
עובד עם כל סוג מדיניות — מובנה,
|
|
126
|
+
עובד עם כל סוג מדיניות — מובנה, מותאם אישית (`custom/`), כנסיון פרויקט (`.failproofai-project/`), או כנסיון משתמש (`.failproofai-user/`).
|
|
126
127
|
|
|
127
128
|
```json
|
|
128
129
|
{
|
|
@@ -141,40 +142,40 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← נופל דרך לג
|
|
|
141
142
|
}
|
|
142
143
|
```
|
|
143
144
|
|
|
144
|
-
כאשר `block-force-push`
|
|
145
|
+
כאשר `block-force-push` מסרב, Claude רואה: *"Force-pushing is blocked. Try creating a fresh branch instead."*
|
|
145
146
|
|
|
146
|
-
ערכים שאינם
|
|
147
|
+
ערכים שאינם מחרוזת ומחרוזות ריקות מתעלמים בשתיקה. אם `hint` לא מוגדר, ההתנהגות נשארת ללא שינוי (תאימות לאחור).
|
|
147
148
|
|
|
148
149
|
### `customPoliciesPath`
|
|
149
150
|
|
|
150
|
-
|
|
151
|
+
Type: `string` (absolute path)
|
|
151
152
|
|
|
152
|
-
נתיב לקובץ JavaScript המכיל מדיניויות hook מותאמות אישית. זה מוגדר
|
|
153
|
+
נתיב לקובץ JavaScript המכיל מדיניויות hook מותאמות אישית. זה מוגדר באופן אוטומטי על ידי `failproofai policies --install --custom <path>` (הנתיב מופך לנתיב מוחלט לפני שהוא מאוחסן).
|
|
153
154
|
|
|
154
|
-
הקובץ נטען מחדש בכל אירוע hook - אין
|
|
155
|
+
הקובץ נטען מחדש בכל אירוע hook - אין קישור לזיכרון מטמון. ראה [Custom Policies](/he/custom-policies) לפרטי כתיבה.
|
|
155
156
|
|
|
156
|
-
### מדיניויות המבוססות על
|
|
157
|
+
### מדיניויות המבוססות על כנסיה
|
|
157
158
|
|
|
158
|
-
בנוסף ל-`customPoliciesPath` המפורש, failproofai
|
|
159
|
+
בנוסף ל-`customPoliciesPath` המפורש, failproofai גוזף ותוקף קובצי מדיניות מספריות `.failproofai/policies/`:
|
|
159
160
|
|
|
160
|
-
| רמה | ספרייה |
|
|
161
|
+
| רמה | ספרייה | יקף |
|
|
161
162
|
|-------|-----------|-------|
|
|
162
|
-
| פרויקט | `.failproofai/policies/` | משותף עם צוות דרך
|
|
163
|
+
| פרויקט | `.failproofai/policies/` | משותף עם צוות דרך שליטה בגרסיות |
|
|
163
164
|
| משתמש | `~/.failproofai/policies/` | אישי, חל על כל הפרויקטים |
|
|
164
165
|
|
|
165
|
-
**התאמת
|
|
166
|
+
**התאמת קובץ:** רק קובצים התואמים `*policies.{js,mjs,ts}` נטענים (לדוגמה `security-policies.mjs`, `workflow-policies.js`). קובצים אחרים בספרייה מתעלמים.
|
|
166
167
|
|
|
167
|
-
**אין צורך
|
|
168
|
+
**אין צורך בהגדרה:** מדיניויות כנסיה אינן דורשות ערכים ב-`policies-config.json`. פשוט שחרר קובצים לספרייה והם יאספו באירוע hook הבא.
|
|
168
169
|
|
|
169
|
-
**טעינת איחוד:** שתי ספריות
|
|
170
|
+
**טעינת איחוד:** שתי ספריות הכנסיה של פרויקט ומשתמש נסרקות. כל הקובצים התואמים משתי הרמות נטענים (בניגוד ל-`customPoliciesPath` אשר משתמש ב-first-scope-wins).
|
|
170
171
|
|
|
171
|
-
ראה [Custom Policies](/he/custom-policies) לפרטים
|
|
172
|
+
ראה [Custom Policies](/he/custom-policies) לפרטים ודוגמאות נוספות.
|
|
172
173
|
|
|
173
174
|
### `llm`
|
|
174
175
|
|
|
175
|
-
|
|
176
|
+
Type: `object` (optional)
|
|
176
177
|
|
|
177
|
-
|
|
178
|
+
הגדרות לקוח LLM עבור מדיניויות המבצעות קריאות AI. לא נדרש עבור רוב ההתקנות.
|
|
178
179
|
|
|
179
180
|
```json
|
|
180
181
|
{
|
|
@@ -187,20 +188,20 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← נופל דרך לג
|
|
|
187
188
|
|
|
188
189
|
---
|
|
189
190
|
|
|
190
|
-
## ניהול
|
|
191
|
+
## ניהול הגדרות מה-CLI
|
|
191
192
|
|
|
192
|
-
הפקודות `policies --install` ו-`policies --uninstall` כותבות ל-`settings.json` של Claude Code (נקודות
|
|
193
|
+
הפקודות `policies --install` ו-`policies --uninstall` כותבות ל-`settings.json` של Claude Code (נקודות הכניסה של ה-hook), בעוד `policies-config.json` הוא הקובץ שאתה מנהל ישירות. השניים נפרדים:
|
|
193
194
|
|
|
194
|
-
- **`settings.json`** - אומר ל-Claude Code
|
|
195
|
-
- **`policies-config.json`** - אומר ל-failproofai
|
|
195
|
+
- **`settings.json`** - אומר ל-Claude Code לקרוא ל-`failproofai --hook <event>` בכל שימוש בכלי
|
|
196
|
+
- **`policies-config.json`** - אומר ל-failproofai איזו מדיניויות להעריך ועם אילו params
|
|
196
197
|
|
|
197
|
-
אתה יכול לערוך
|
|
198
|
+
אתה יכול לערוך `policies-config.json` ישירות בכל זמן; שינויים נכנסים לתוקף מיידית באירוע hook הבא ללא צורך בהפעלה מחדש.
|
|
198
199
|
|
|
199
200
|
---
|
|
200
201
|
|
|
201
|
-
## דוגמה:
|
|
202
|
+
## דוגמה: הגדרה ברמת פרויקט עם ברירות מחדל לצוות
|
|
202
203
|
|
|
203
|
-
|
|
204
|
+
בצע commit `.failproofai/policies-config.json` לריפו שלך:
|
|
204
205
|
|
|
205
206
|
```json
|
|
206
207
|
{
|
|
@@ -219,4 +220,4 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← נופל דרך לג
|
|
|
219
220
|
}
|
|
220
221
|
```
|
|
221
222
|
|
|
222
|
-
כל מפתח יכול
|
|
223
|
+
כל מפתח יכול ליצור `.failproofai/policies-config.local.json` (מפורסם ל-gitignore) לעדכונים אישיים ללא השפעה על חברי הצוות.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: "כתוב
|
|
2
|
+
title: מדיניות מותאמות אישית
|
|
3
|
+
description: "כתוב כללים משלך ב-JavaScript - אכוף קונבנציות, מנע סחיפה, גלה כשלים, היווצרות קשור עם מערכות חיצוניות"
|
|
4
4
|
icon: code
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
מדיניות מותאמות אישית מאפשרת לך לכתוב כללים לכל התנהגות סוכן: אכוף קונבנציות פרויקט, מנע סחיפה, תגדור פעולות הרסניות, גלה סוכנים תקועים, או היווצרות קשור עם Slack, זרימות אישור, ועוד. הם משתמשים באותה מערכת אירוע hook ובהחלטות `allow`, `deny`, `instruct` כמו מדיניות מובנית.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ customPolicies.add({
|
|
|
29
29
|
});
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
התקן
|
|
32
|
+
התקן אותו:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
failproofai policies --install --custom ./my-policies.js
|
|
@@ -37,11 +37,11 @@ failproofai policies --install --custom ./my-policies.js
|
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
## שתי דרכים לטעון
|
|
40
|
+
## שתי דרכים לטעון מדיניות מותאמת אישית
|
|
41
41
|
|
|
42
|
-
### אפשרות 1: מבוססת קונבנציה (
|
|
42
|
+
### אפשרות 1: מבוססת קונבנציה (מומלץ)
|
|
43
43
|
|
|
44
|
-
שים קבצים `*policies.{js,mjs,ts}`
|
|
44
|
+
שים קבצים `*policies.{js,mjs,ts}` ב-`.failproofai/policies/` והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה עובד כמו git hooks: שים קובץ, זה פשוט עובד.
|
|
45
45
|
|
|
46
46
|
```
|
|
47
47
|
# Project level — committed to git, shared with the team
|
|
@@ -53,14 +53,14 @@ failproofai policies --install --custom ./my-policies.js
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**איך זה עובד:**
|
|
56
|
-
- שתי
|
|
57
|
-
- קבצים נטענים בסדר אלפביתי בתוך כל
|
|
58
|
-
- רק קבצים
|
|
59
|
-
- כל קובץ
|
|
60
|
-
- עובד לצד
|
|
56
|
+
- שתי ספריות פרויקט ומשתמש סורקות (איחוד — לא ראשון-סקופ-ינצחון)
|
|
57
|
+
- קבצים נטענים בסדר אלפביתי בתוך כל ספרייה. הוספת קידומת עם `01-`, `02-` לשליטה בסדר
|
|
58
|
+
- רק קבצים המתאימים ל-`*policies.{js,mjs,ts}` נטענים; קבצים אחרים מתעלמים
|
|
59
|
+
- כל קובץ נטען באופן עצמאי (fail-open לכל קובץ)
|
|
60
|
+
- עובד לצד `--custom` מפורשים ומדיניות מובנית
|
|
61
61
|
|
|
62
62
|
<Tip>
|
|
63
|
-
|
|
63
|
+
מדיניות קונבנציה היא הדרך הקלה ביותר לשתף מדיניות בכל הקבוצה. Commit `.failproofai/policies/` ל-git וכל חברי הקבוצה מקבלים אותם באופן אוטומטי.
|
|
64
64
|
</Tip>
|
|
65
65
|
|
|
66
66
|
### אפשרות 2: נתיב קובץ מפורש
|
|
@@ -76,21 +76,21 @@ failproofai policies --install --custom ./new-policies.js
|
|
|
76
76
|
failproofai policies --uninstall --custom
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
הנתיב המוחלט
|
|
79
|
+
הנתיב המוחלט שהוסדר מאוחסן ב-`policies-config.json` כ-`customPoliciesPath`. הקובץ נטען טרי בכל אירוע hook - אין שומרון בין אירועים.
|
|
80
80
|
|
|
81
81
|
### שימוש בשניהם ביחד
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
מדיניות קונבנציה וקובץ `--custom` מפורש יכולים להתקיים זה לצד זה. סדר טעינה:
|
|
84
84
|
|
|
85
|
-
1. קובץ `customPoliciesPath` מפורש (אם
|
|
86
|
-
2. קבצי קונבנציה
|
|
87
|
-
3. קבצי קונבנציה
|
|
85
|
+
1. קובץ `customPoliciesPath` מפורש (אם מחוקרן)
|
|
86
|
+
2. קבצי קונבנציה פרויקט (`{cwd}/.failproofai/policies/`, אלפביתי)
|
|
87
|
+
3. קבצי קונבנציה משתמש (`~/.failproofai/policies/`, אלפביתי)
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
|
91
91
|
## API
|
|
92
92
|
|
|
93
|
-
###
|
|
93
|
+
### ייבוא
|
|
94
94
|
|
|
95
95
|
```js
|
|
96
96
|
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
@@ -98,7 +98,7 @@ import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
|
98
98
|
|
|
99
99
|
### `customPolicies.add(hook)`
|
|
100
100
|
|
|
101
|
-
רושם מדיניות. קרא
|
|
101
|
+
רושם מדיניות. קרא זה כמה פעמים שצריך עבור מדיניות מרובות באותו קובץ.
|
|
102
102
|
|
|
103
103
|
```ts
|
|
104
104
|
customPolicies.add({
|
|
@@ -111,33 +111,32 @@ customPolicies.add({
|
|
|
111
111
|
|
|
112
112
|
### עוזרי החלטה
|
|
113
113
|
|
|
114
|
-
| פונקציה |
|
|
114
|
+
| פונקציה | אפקט | השתמש כאשר |
|
|
115
115
|
|----------|--------|----------|
|
|
116
|
-
| `allow()` |
|
|
117
|
-
| `deny(message)` | חסום את הפעולה |
|
|
118
|
-
| `instruct(message)` | הוסף הקשר ללא חסימה | תן
|
|
116
|
+
| `allow()` | אפשר את הפעולה בשקט | הפעולה בטוחה, לא צריך הודעה |
|
|
117
|
+
| `deny(message)` | חסום את הפעולה | הסוכן לא צריך לבצע פעולה זו |
|
|
118
|
+
| `instruct(message)` | הוסף הקשר ללא חסימה | תן לסוכן הקשר נוסף כדי להישמר על מסלול |
|
|
119
119
|
|
|
120
|
-
`deny(message)` - ההודעה מופיעה ל-Claude
|
|
120
|
+
`deny(message)` - ההודעה מופיעה ל-Claude עם קידומת `"Blocked by failproofai:"`. ערך `deny` יחיד מקצר את כל ההערכה הנוספת.
|
|
121
121
|
|
|
122
|
-
`instruct(message)` - ההודעה
|
|
122
|
+
`instruct(message)` - ההודעה מוספת להקשר של Claude לקריאת הכלי הנוכחית. כל הודעות `instruct` מצטברות ומועברות ביחד.
|
|
123
123
|
|
|
124
124
|
<Tip>
|
|
125
|
-
אתה יכול
|
|
125
|
+
אתה יכול להוסיף הדרכה נוספת לכל הודעת `deny` או `instruct` על ידי הוספת שדה `hint` ב-`policyParams` — אין צורך בשינוי קוד. זה עובד עבור מדיניות מותאמת אישית (`custom/`), מדיניות קונבנציה פרויקט (`.failproofai-project/`), ומדיניות קונבנציה משתמש (`.failproofai-user/`) גם כן. ראה [Configuration → hint](/he/configuration#hint-cross-cutting) לפרטים.
|
|
126
126
|
</Tip>
|
|
127
127
|
|
|
128
128
|
### הודעות allow מידע
|
|
129
129
|
|
|
130
|
+
`allow(message)` מאפשר את הפעולה **וגם** שולח הודעת מידע חזרה ל-Claude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של מטפל hook — אותו מנגנון המשמש ב-`instruct`, אך שונה מבחינה סמנטית: זו עדכון סטטוס, לא אזהרה.
|
|
130
131
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
| פונקציה | השפעה | השתמש כאשר |
|
|
132
|
+
| פונקציה | אפקט | השתמש כאשר |
|
|
134
133
|
|----------|--------|----------|
|
|
135
|
-
| `allow(message)` |
|
|
134
|
+
| `allow(message)` | אפשר ושלח הקשר ל-Claude | אשר שצ'ק עבר, או הסבר למה צ'ק דולק |
|
|
136
135
|
|
|
137
136
|
מקרי שימוש:
|
|
138
137
|
- **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר ל-Claude שהכל ירוק
|
|
139
|
-
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק
|
|
140
|
-
- **הודעות מרובות מצטברות:** אם
|
|
138
|
+
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק דולק כדי שיהיה להם הקשר מלא
|
|
139
|
+
- **הודעות מרובות מצטברות:** אם מדיניות מרובות מחזירות כל אחת `allow(message)`, כל ההודעות משולבות עם שורות חדשות ומועברות ביחד
|
|
141
140
|
|
|
142
141
|
```js
|
|
143
142
|
customPolicies.add({
|
|
@@ -161,48 +160,48 @@ customPolicies.add({
|
|
|
161
160
|
| שדה | סוג | תיאור |
|
|
162
161
|
|-------|------|-------------|
|
|
163
162
|
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
164
|
-
| `toolName` | `string \| undefined` | הכלי
|
|
163
|
+
| `toolName` | `string \| undefined` | הכלי הנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
|
|
165
164
|
| `toolInput` | `Record<string, unknown> \| undefined` | פרמטרי הקלט של הכלי |
|
|
166
|
-
| `payload` | `Record<string, unknown>` |
|
|
167
|
-
| `session` | `SessionMetadata \| undefined` | הקשר
|
|
165
|
+
| `payload` | `Record<string, unknown>` | חומלת עומס של אירוע גולמי מלא מ-Claude Code |
|
|
166
|
+
| `session` | `SessionMetadata \| undefined` | הקשר של הפעילות (ראה להלן) |
|
|
168
167
|
|
|
169
168
|
### שדות `SessionMetadata`
|
|
170
169
|
|
|
171
170
|
| שדה | סוג | תיאור |
|
|
172
171
|
|-------|------|-------------|
|
|
173
|
-
| `sessionId` | `string` |
|
|
174
|
-
| `cwd` | `string` |
|
|
175
|
-
| `transcriptPath` | `string` | נתיב לקובץ
|
|
172
|
+
| `sessionId` | `string` | Claude Code זהה הפעילות |
|
|
173
|
+
| `cwd` | `string` | ספרייה עובדת של הפעילות Claude Code |
|
|
174
|
+
| `transcriptPath` | `string` | נתיב לקובץ תמלול JSONL של הפעילות |
|
|
176
175
|
|
|
177
176
|
### סוגי אירוע
|
|
178
177
|
|
|
179
|
-
| אירוע | מתי
|
|
178
|
+
| אירוע | מתי זה מתעורר | תוכן `toolInput` |
|
|
180
179
|
|-------|--------------|----------------------|
|
|
181
|
-
| `PreToolUse` | לפני
|
|
182
|
-
| `PostToolUse` | לאחר
|
|
183
|
-
| `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים תמיד
|
|
184
|
-
| `Stop` | כאשר
|
|
180
|
+
| `PreToolUse` | לפני Claude מפעיל כלי | קלט הכלי (למשל `{ command: "..." }` עבור Bash) |
|
|
181
|
+
| `PostToolUse` | לאחר השלמת כלי | קלט הכלי + `tool_result` (הפלט) |
|
|
182
|
+
| `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים להחזיר תמיד `allow()`, הם לא יכולים חסום הודעות |
|
|
183
|
+
| `Stop` | כאשר הפעילות Claude מסתיימת | ריק |
|
|
185
184
|
|
|
186
185
|
---
|
|
187
186
|
|
|
188
187
|
## סדר הערכה
|
|
189
188
|
|
|
190
|
-
|
|
189
|
+
מדיניות מוערכת בסדר זה:
|
|
191
190
|
|
|
192
|
-
1.
|
|
193
|
-
2.
|
|
194
|
-
3.
|
|
195
|
-
4.
|
|
191
|
+
1. מדיניות מובנית (בסדר הגדרה)
|
|
192
|
+
2. מדיניות מותאמת אישית מפורשת מ-`customPoliciesPath` (בסדר `.add()`)
|
|
193
|
+
3. מדיניות קונבנציה מפרויקט `.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
194
|
+
4. מדיניות קונבנציה מ-`~/.failproofai/policies/` משתמש (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
196
195
|
|
|
197
196
|
<Note>
|
|
198
|
-
`deny` הראשון מקצר את כל
|
|
197
|
+
`deny` הראשון מקצר את כל המדיניות הבאות. כל הודעות `instruct` מצטברות ומועברות ביחד.
|
|
199
198
|
</Note>
|
|
200
199
|
|
|
201
200
|
---
|
|
202
201
|
|
|
203
|
-
##
|
|
202
|
+
## יבואות טרנזיטיביים
|
|
204
203
|
|
|
205
|
-
קבצי מדיניות
|
|
204
|
+
קבצי מדיניות מותאמת אישית יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:
|
|
206
205
|
|
|
207
206
|
```js
|
|
208
207
|
// my-policies.js
|
|
@@ -219,13 +218,13 @@ customPolicies.add({
|
|
|
219
218
|
});
|
|
220
219
|
```
|
|
221
220
|
|
|
222
|
-
כל
|
|
221
|
+
כל היבואות היחסיות הנגישות מקובץ הכניסה מוסדרות. זה מיושם על ידי כתיבה מחדש `from "failproofai"` ייבואים לנתיב dist בפועל ויצירת קבצים זמניים `.mjs` כדי להבטיח תאימות ESM.
|
|
223
222
|
|
|
224
223
|
---
|
|
225
224
|
|
|
226
225
|
## סינון סוג אירוע
|
|
227
226
|
|
|
228
|
-
השתמש
|
|
227
|
+
השתמש `match.events` כדי להגביל מתי מדיניות מתעוררת:
|
|
229
228
|
|
|
230
229
|
```js
|
|
231
230
|
customPolicies.add({
|
|
@@ -239,26 +238,26 @@ customPolicies.add({
|
|
|
239
238
|
});
|
|
240
239
|
```
|
|
241
240
|
|
|
242
|
-
השמט `match` לחלוטין
|
|
241
|
+
השמט `match` לחלוטין כדי להתעורר על כל סוג אירוע.
|
|
243
242
|
|
|
244
243
|
---
|
|
245
244
|
|
|
246
245
|
## טיפול בשגיאות ומצבי כשל
|
|
247
246
|
|
|
248
|
-
|
|
247
|
+
מדיניות מותאמת אישית היא **fail-open**: שגיאות לא חוסמות מדיניות מובנית וגם לא קורסות את מטפל ה-hook.
|
|
249
248
|
|
|
250
|
-
|
|
|
249
|
+
| כישלון | התנהגות |
|
|
251
250
|
|---------|----------|
|
|
252
|
-
| `customPoliciesPath` לא מוגדר | אין
|
|
253
|
-
| קובץ לא נמצא | אזהרה
|
|
254
|
-
| שגיאת
|
|
255
|
-
| שגיאת
|
|
256
|
-
| `fn` זורק בזמן ריצה | שגיאה
|
|
257
|
-
| `fn` לוקח יותר מ-10 שניות | timeout
|
|
258
|
-
|
|
|
251
|
+
| `customPoliciesPath` לא מוגדר | אין מדיניות מותאמת אישית מפורשת מתוך; מדיניות קונבנציה ומובנית ממשיכות כרגיל |
|
|
252
|
+
| קובץ לא נמצא | אזהרה רשומה ל-`~/.failproofai/hook.log`; מובנה ממשיך |
|
|
253
|
+
| שגיאת תחביר/ייבוא (מפורש) | שגיאה רשומה ל-`~/.failproofai/hook.log`; מדיניות מותאמת אישית מפורשת דלק |
|
|
254
|
+
| שגיאת תחביר/ייבוא (קונבנציה) | שגיאה רשומה; קובץ זה דלק, קבצי קונבנציה אחרים עדיין נטענים |
|
|
255
|
+
| `fn` זורק בזמן ריצה | שגיאה רשומה; hook זה מטופל כ-`allow`; hook אחרים ממשיכים |
|
|
256
|
+
| `fn` לוקח יותר מ-10 שניות | timeout רשומה; מטופל כ-`allow` |
|
|
257
|
+
| ספרייה קונבנציה חסרה | אין מדיניות קונבנציה מתוך; אין שגיאה |
|
|
259
258
|
|
|
260
259
|
<Tip>
|
|
261
|
-
|
|
260
|
+
לדבוג שגיאות מדיניות מותאמת אישית, צפה בקובץ היומן:
|
|
262
261
|
|
|
263
262
|
```bash
|
|
264
263
|
tail -f ~/.failproofai/hook.log
|
|
@@ -267,7 +266,7 @@ tail -f ~/.failproofai/hook.log
|
|
|
267
266
|
|
|
268
267
|
---
|
|
269
268
|
|
|
270
|
-
## דוגמה מלאה:
|
|
269
|
+
## דוגמה מלאה: מדיניות מרובה
|
|
271
270
|
|
|
272
271
|
```js
|
|
273
272
|
// my-policies.js
|
|
@@ -324,16 +323,16 @@ export { customPolicies };
|
|
|
324
323
|
|
|
325
324
|
## דוגמאות
|
|
326
325
|
|
|
327
|
-
|
|
326
|
+
ספרייה `examples/` מכילה קבצי מדיניות מוכנים להפעלה:
|
|
328
327
|
|
|
329
328
|
| קובץ | תוכן |
|
|
330
329
|
|------|----------|
|
|
331
|
-
| `examples/policies-basic.js` | חמש
|
|
332
|
-
| `examples/policies-advanced/index.js` | דפוסים מתקדמים:
|
|
333
|
-
| `examples/convention-policies/security-policies.mjs` |
|
|
334
|
-
| `examples/convention-policies/workflow-policies.mjs` |
|
|
330
|
+
| `examples/policies-basic.js` | חמש מדיניות התחלה המכסות מצבי כשל סוכן נפוצים |
|
|
331
|
+
| `examples/policies-advanced/index.js` | דפוסים מתקדמים: יבואות טרנזיטיביים, קריאות אסינכרוניות, ניקוי פלט, and וו-end-of-session |
|
|
332
|
+
| `examples/convention-policies/security-policies.mjs` | מדיניות אבטחה מבוססת קונבנציה (חסום .env כתיבות, מנע כתיבה מחדש של היסטוריה של git) |
|
|
333
|
+
| `examples/convention-policies/workflow-policies.mjs` | מדיניות זרימת עבודה מבוססת קונבנציה (תזכורות בדיקה, כתיבות קובץ ביקורת) |
|
|
335
334
|
|
|
336
|
-
### שימוש בדוגמאות קובץ
|
|
335
|
+
### שימוש בדוגמאות קובץ מפורשות
|
|
337
336
|
|
|
338
337
|
```bash
|
|
339
338
|
failproofai policies --install --custom ./examples/policies-basic.js
|
|
@@ -351,4 +350,4 @@ mkdir -p ~/.failproofai/policies
|
|
|
351
350
|
cp examples/convention-policies/*.mjs ~/.failproofai/policies/
|
|
352
351
|
```
|
|
353
352
|
|
|
354
|
-
|
|
353
|
+
אין צורך בפקודת התקנה — הקבצים נאספים באופן אוטומטי בעלון ה-hook הבא.
|