failproofai 0.0.5-beta.0 → 0.0.6-beta.0
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/workflow-policies.mjs +2 -1
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- 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/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/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/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/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/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/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/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]__0r6vvp5._.js → [root-of-the-server]__0.~fd7s._.js} +2 -2
- 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]__0z5dd-f._.js → [root-of-the-server]__0a.nuas._.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]__0w6l33k._.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 +3 -3
- 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/{0j_ivegn3i5wt.js → 0.z51twd.0l5z.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04fpsjft~cje..js → 0hctoh28rg838.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0.io32u7gjgsb.js → 0hplx-8c-4vpv.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0yf_mmdukq6up.js → 0maq.q1t.ri85.js} +2 -2
- package/.next/standalone/.next/static/chunks/{0x8vagatq36_7.js → 0teq8wdh3po1n.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04mtv9jnqknn3.js → 0uc0um_uz51m_.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0h4qcn40dunn7.js → 0ul6fk-z.6k-0.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0kvldut6ndzyz.js → 0w9lwqy0-v1dk.js} +1 -1
- package/.next/standalone/CHANGELOG.md +9 -1
- package/.next/standalone/README.md +2 -2
- package/.next/standalone/dist/cli.mjs +19 -2
- package/.next/standalone/docs/ar/architecture.mdx +66 -65
- package/.next/standalone/docs/ar/configuration.mdx +42 -42
- package/.next/standalone/docs/ar/custom-policies.mdx +63 -68
- package/.next/standalone/docs/architecture.mdx +2 -2
- package/.next/standalone/docs/configuration.mdx +1 -1
- package/.next/standalone/docs/custom-policies.mdx +2 -6
- package/.next/standalone/docs/de/architecture.mdx +92 -92
- package/.next/standalone/docs/de/configuration.mdx +35 -35
- package/.next/standalone/docs/de/custom-policies.mdx +50 -54
- package/.next/standalone/docs/es/architecture.mdx +73 -73
- package/.next/standalone/docs/es/configuration.mdx +25 -25
- package/.next/standalone/docs/es/custom-policies.mdx +49 -53
- package/.next/standalone/docs/fr/architecture.mdx +55 -55
- package/.next/standalone/docs/fr/configuration.mdx +26 -26
- package/.next/standalone/docs/fr/custom-policies.mdx +42 -46
- package/.next/standalone/docs/he/architecture.mdx +67 -67
- package/.next/standalone/docs/he/configuration.mdx +53 -52
- package/.next/standalone/docs/he/custom-policies.mdx +73 -77
- package/.next/standalone/docs/hi/architecture.mdx +107 -107
- package/.next/standalone/docs/hi/configuration.mdx +39 -39
- package/.next/standalone/docs/hi/custom-policies.mdx +77 -81
- package/.next/standalone/docs/i18n/README.ar.md +66 -66
- package/.next/standalone/docs/i18n/README.de.md +40 -40
- package/.next/standalone/docs/i18n/README.es.md +40 -40
- package/.next/standalone/docs/i18n/README.fr.md +44 -44
- package/.next/standalone/docs/i18n/README.he.md +67 -67
- package/.next/standalone/docs/i18n/README.hi.md +71 -71
- package/.next/standalone/docs/i18n/README.it.md +63 -63
- package/.next/standalone/docs/i18n/README.ja.md +55 -55
- package/.next/standalone/docs/i18n/README.ko.md +59 -59
- package/.next/standalone/docs/i18n/README.pt-br.md +45 -45
- package/.next/standalone/docs/i18n/README.ru.md +71 -71
- package/.next/standalone/docs/i18n/README.tr.md +76 -76
- package/.next/standalone/docs/i18n/README.vi.md +71 -71
- package/.next/standalone/docs/i18n/README.zh.md +53 -53
- package/.next/standalone/docs/it/architecture.mdx +55 -54
- package/.next/standalone/docs/it/configuration.mdx +45 -46
- package/.next/standalone/docs/it/custom-policies.mdx +77 -82
- package/.next/standalone/docs/ja/architecture.mdx +93 -93
- package/.next/standalone/docs/ja/configuration.mdx +48 -48
- package/.next/standalone/docs/ja/custom-policies.mdx +63 -67
- package/.next/standalone/docs/ko/architecture.mdx +66 -66
- package/.next/standalone/docs/ko/configuration.mdx +36 -36
- package/.next/standalone/docs/ko/custom-policies.mdx +73 -77
- package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
- package/.next/standalone/docs/pt-br/configuration.mdx +36 -36
- package/.next/standalone/docs/pt-br/custom-policies.mdx +62 -66
- 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 +70 -74
- package/.next/standalone/docs/tr/architecture.mdx +124 -124
- package/.next/standalone/docs/tr/configuration.mdx +46 -47
- package/.next/standalone/docs/tr/custom-policies.mdx +75 -78
- package/.next/standalone/docs/vi/architecture.mdx +65 -64
- package/.next/standalone/docs/vi/configuration.mdx +42 -42
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -72
- package/.next/standalone/docs/zh/architecture.mdx +67 -67
- package/.next/standalone/docs/zh/configuration.mdx +35 -35
- package/.next/standalone/docs/zh/custom-policies.mdx +54 -58
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/hooks/builtin-policies.ts +30 -0
- package/README.md +2 -2
- package/dist/cli.mjs +19 -2
- package/package.json +1 -1
- package/src/hooks/builtin-policies.ts +30 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_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,36 +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
|
-
### הודעות allow מידע
|
|
128
|
+
### הודעות allow מידע
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
`allow(message)` היא תכונת beta זמינה מ-v0.0.2-beta.3. ה-API עשוי להשתנות בגרסאות עתידיות. גרסאות קודמות תומכות רק ב-`allow()` ללא טיעונים.
|
|
132
|
-
</Note>
|
|
133
|
-
|
|
134
|
-
`allow(message)` מתיר את הפעולה **ו**שולח הודעה מידע בחזרה ל-Claude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של hook handler — אותה מנגנון שבו משתמשים `instruct`, אך שונה מבחינה סמנטית: זה עדכון סטטוס, לא אזהרה.
|
|
130
|
+
`allow(message)` מאפשר את הפעולה **וגם** שולח הודעת מידע חזרה ל-Claude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של מטפל hook — אותו מנגנון המשמש ב-`instruct`, אך שונה מבחינה סמנטית: זו עדכון סטטוס, לא אזהרה.
|
|
135
131
|
|
|
136
|
-
| פונקציה |
|
|
132
|
+
| פונקציה | אפקט | השתמש כאשר |
|
|
137
133
|
|----------|--------|----------|
|
|
138
|
-
| `allow(message)` |
|
|
134
|
+
| `allow(message)` | אפשר ושלח הקשר ל-Claude | אשר שצ'ק עבר, או הסבר למה צ'ק דולק |
|
|
139
135
|
|
|
140
136
|
מקרי שימוש:
|
|
141
137
|
- **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר ל-Claude שהכל ירוק
|
|
142
|
-
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק
|
|
143
|
-
- **הודעות מרובות מצטברות:** אם
|
|
138
|
+
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק דולק כדי שיהיה להם הקשר מלא
|
|
139
|
+
- **הודעות מרובות מצטברות:** אם מדיניות מרובות מחזירות כל אחת `allow(message)`, כל ההודעות משולבות עם שורות חדשות ומועברות ביחד
|
|
144
140
|
|
|
145
141
|
```js
|
|
146
142
|
customPolicies.add({
|
|
@@ -164,48 +160,48 @@ customPolicies.add({
|
|
|
164
160
|
| שדה | סוג | תיאור |
|
|
165
161
|
|-------|------|-------------|
|
|
166
162
|
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
167
|
-
| `toolName` | `string \| undefined` | הכלי
|
|
163
|
+
| `toolName` | `string \| undefined` | הכלי הנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
|
|
168
164
|
| `toolInput` | `Record<string, unknown> \| undefined` | פרמטרי הקלט של הכלי |
|
|
169
|
-
| `payload` | `Record<string, unknown>` |
|
|
170
|
-
| `session` | `SessionMetadata \| undefined` | הקשר
|
|
165
|
+
| `payload` | `Record<string, unknown>` | חומלת עומס של אירוע גולמי מלא מ-Claude Code |
|
|
166
|
+
| `session` | `SessionMetadata \| undefined` | הקשר של הפעילות (ראה להלן) |
|
|
171
167
|
|
|
172
168
|
### שדות `SessionMetadata`
|
|
173
169
|
|
|
174
170
|
| שדה | סוג | תיאור |
|
|
175
171
|
|-------|------|-------------|
|
|
176
|
-
| `sessionId` | `string` |
|
|
177
|
-
| `cwd` | `string` |
|
|
178
|
-
| `transcriptPath` | `string` | נתיב לקובץ
|
|
172
|
+
| `sessionId` | `string` | Claude Code זהה הפעילות |
|
|
173
|
+
| `cwd` | `string` | ספרייה עובדת של הפעילות Claude Code |
|
|
174
|
+
| `transcriptPath` | `string` | נתיב לקובץ תמלול JSONL של הפעילות |
|
|
179
175
|
|
|
180
176
|
### סוגי אירוע
|
|
181
177
|
|
|
182
|
-
| אירוע | מתי
|
|
178
|
+
| אירוע | מתי זה מתעורר | תוכן `toolInput` |
|
|
183
179
|
|-------|--------------|----------------------|
|
|
184
|
-
| `PreToolUse` | לפני
|
|
185
|
-
| `PostToolUse` | לאחר
|
|
186
|
-
| `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים תמיד
|
|
187
|
-
| `Stop` | כאשר
|
|
180
|
+
| `PreToolUse` | לפני Claude מפעיל כלי | קלט הכלי (למשל `{ command: "..." }` עבור Bash) |
|
|
181
|
+
| `PostToolUse` | לאחר השלמת כלי | קלט הכלי + `tool_result` (הפלט) |
|
|
182
|
+
| `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים להחזיר תמיד `allow()`, הם לא יכולים חסום הודעות |
|
|
183
|
+
| `Stop` | כאשר הפעילות Claude מסתיימת | ריק |
|
|
188
184
|
|
|
189
185
|
---
|
|
190
186
|
|
|
191
187
|
## סדר הערכה
|
|
192
188
|
|
|
193
|
-
|
|
189
|
+
מדיניות מוערכת בסדר זה:
|
|
194
190
|
|
|
195
|
-
1.
|
|
196
|
-
2.
|
|
197
|
-
3.
|
|
198
|
-
4.
|
|
191
|
+
1. מדיניות מובנית (בסדר הגדרה)
|
|
192
|
+
2. מדיניות מותאמת אישית מפורשת מ-`customPoliciesPath` (בסדר `.add()`)
|
|
193
|
+
3. מדיניות קונבנציה מפרויקט `.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
194
|
+
4. מדיניות קונבנציה מ-`~/.failproofai/policies/` משתמש (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
199
195
|
|
|
200
196
|
<Note>
|
|
201
|
-
`deny` הראשון מקצר את כל
|
|
197
|
+
`deny` הראשון מקצר את כל המדיניות הבאות. כל הודעות `instruct` מצטברות ומועברות ביחד.
|
|
202
198
|
</Note>
|
|
203
199
|
|
|
204
200
|
---
|
|
205
201
|
|
|
206
|
-
##
|
|
202
|
+
## יבואות טרנזיטיביים
|
|
207
203
|
|
|
208
|
-
קבצי מדיניות
|
|
204
|
+
קבצי מדיניות מותאמת אישית יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:
|
|
209
205
|
|
|
210
206
|
```js
|
|
211
207
|
// my-policies.js
|
|
@@ -222,13 +218,13 @@ customPolicies.add({
|
|
|
222
218
|
});
|
|
223
219
|
```
|
|
224
220
|
|
|
225
|
-
כל
|
|
221
|
+
כל היבואות היחסיות הנגישות מקובץ הכניסה מוסדרות. זה מיושם על ידי כתיבה מחדש `from "failproofai"` ייבואים לנתיב dist בפועל ויצירת קבצים זמניים `.mjs` כדי להבטיח תאימות ESM.
|
|
226
222
|
|
|
227
223
|
---
|
|
228
224
|
|
|
229
225
|
## סינון סוג אירוע
|
|
230
226
|
|
|
231
|
-
השתמש
|
|
227
|
+
השתמש `match.events` כדי להגביל מתי מדיניות מתעוררת:
|
|
232
228
|
|
|
233
229
|
```js
|
|
234
230
|
customPolicies.add({
|
|
@@ -242,26 +238,26 @@ customPolicies.add({
|
|
|
242
238
|
});
|
|
243
239
|
```
|
|
244
240
|
|
|
245
|
-
השמט `match` לחלוטין
|
|
241
|
+
השמט `match` לחלוטין כדי להתעורר על כל סוג אירוע.
|
|
246
242
|
|
|
247
243
|
---
|
|
248
244
|
|
|
249
245
|
## טיפול בשגיאות ומצבי כשל
|
|
250
246
|
|
|
251
|
-
|
|
247
|
+
מדיניות מותאמת אישית היא **fail-open**: שגיאות לא חוסמות מדיניות מובנית וגם לא קורסות את מטפל ה-hook.
|
|
252
248
|
|
|
253
|
-
|
|
|
249
|
+
| כישלון | התנהגות |
|
|
254
250
|
|---------|----------|
|
|
255
|
-
| `customPoliciesPath` לא מוגדר | אין
|
|
256
|
-
| קובץ לא נמצא | אזהרה
|
|
257
|
-
| שגיאת
|
|
258
|
-
| שגיאת
|
|
259
|
-
| `fn` זורק בזמן ריצה | שגיאה
|
|
260
|
-
| `fn` לוקח יותר מ-10 שניות | timeout
|
|
261
|
-
|
|
|
251
|
+
| `customPoliciesPath` לא מוגדר | אין מדיניות מותאמת אישית מפורשת מתוך; מדיניות קונבנציה ומובנית ממשיכות כרגיל |
|
|
252
|
+
| קובץ לא נמצא | אזהרה רשומה ל-`~/.failproofai/hook.log`; מובנה ממשיך |
|
|
253
|
+
| שגיאת תחביר/ייבוא (מפורש) | שגיאה רשומה ל-`~/.failproofai/hook.log`; מדיניות מותאמת אישית מפורשת דלק |
|
|
254
|
+
| שגיאת תחביר/ייבוא (קונבנציה) | שגיאה רשומה; קובץ זה דלק, קבצי קונבנציה אחרים עדיין נטענים |
|
|
255
|
+
| `fn` זורק בזמן ריצה | שגיאה רשומה; hook זה מטופל כ-`allow`; hook אחרים ממשיכים |
|
|
256
|
+
| `fn` לוקח יותר מ-10 שניות | timeout רשומה; מטופל כ-`allow` |
|
|
257
|
+
| ספרייה קונבנציה חסרה | אין מדיניות קונבנציה מתוך; אין שגיאה |
|
|
262
258
|
|
|
263
259
|
<Tip>
|
|
264
|
-
|
|
260
|
+
לדבוג שגיאות מדיניות מותאמת אישית, צפה בקובץ היומן:
|
|
265
261
|
|
|
266
262
|
```bash
|
|
267
263
|
tail -f ~/.failproofai/hook.log
|
|
@@ -270,7 +266,7 @@ tail -f ~/.failproofai/hook.log
|
|
|
270
266
|
|
|
271
267
|
---
|
|
272
268
|
|
|
273
|
-
## דוגמה מלאה:
|
|
269
|
+
## דוגמה מלאה: מדיניות מרובה
|
|
274
270
|
|
|
275
271
|
```js
|
|
276
272
|
// my-policies.js
|
|
@@ -327,16 +323,16 @@ export { customPolicies };
|
|
|
327
323
|
|
|
328
324
|
## דוגמאות
|
|
329
325
|
|
|
330
|
-
|
|
326
|
+
ספרייה `examples/` מכילה קבצי מדיניות מוכנים להפעלה:
|
|
331
327
|
|
|
332
328
|
| קובץ | תוכן |
|
|
333
329
|
|------|----------|
|
|
334
|
-
| `examples/policies-basic.js` | חמש
|
|
335
|
-
| `examples/policies-advanced/index.js` | דפוסים מתקדמים:
|
|
336
|
-
| `examples/convention-policies/security-policies.mjs` |
|
|
337
|
-
| `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` | מדיניות זרימת עבודה מבוססת קונבנציה (תזכורות בדיקה, כתיבות קובץ ביקורת) |
|
|
338
334
|
|
|
339
|
-
### שימוש בדוגמאות קובץ
|
|
335
|
+
### שימוש בדוגמאות קובץ מפורשות
|
|
340
336
|
|
|
341
337
|
```bash
|
|
342
338
|
failproofai policies --install --custom ./examples/policies-basic.js
|
|
@@ -354,4 +350,4 @@ mkdir -p ~/.failproofai/policies
|
|
|
354
350
|
cp examples/convention-policies/*.mjs ~/.failproofai/policies/
|
|
355
351
|
```
|
|
356
352
|
|
|
357
|
-
|
|
353
|
+
אין צורך בפקודת התקנה — הקבצים נאספים באופן אוטומטי בעלון ה-hook הבא.
|