failproofai 0.0.6-beta.1 → 0.0.6-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.failproofai/policies/review-policies.mjs +4 -3
- 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]__0~kmh8w._.js → [root-of-the-server]__05akje6._.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]__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]__0rh.18_._.js → [root-of-the-server]__0i5kvry._.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/{08t08igdql9yt.js → 00j0rr7rh8ef8.js} +1 -1
- package/.next/standalone/.next/static/chunks/{12~yi9oj8av8p.js → 05j1px0r8yzh6.js} +2 -2
- package/.next/standalone/.next/static/chunks/{09_k80d~cq2wg.js → 0badv41uxa56..js} +1 -1
- package/.next/standalone/.next/static/chunks/{0wlyoif4_kj_t.js → 0ijk_kek9_wyx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0bvhsa6zva2o..js → 0ksdlt_1hucdm.js} +1 -1
- package/.next/standalone/.next/static/chunks/{03rz6ykw-a2xi.js → 0npb~873.wvg3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{01b~z8f1ws0rk.js → 0xpl.oscrakvx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0gbf4cphy8ksq.js → 1052sguyd-.ka.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0v.yd0kg_ld3r.js → 14cl9poem30dq.js} +1 -1
- package/.next/standalone/CHANGELOG.md +11 -0
- package/.next/standalone/dist/cli.mjs +3 -3
- package/.next/standalone/docs/ar/built-in-policies.mdx +124 -87
- package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
- package/.next/standalone/docs/ar/examples.mdx +86 -33
- package/.next/standalone/docs/ar/getting-started.mdx +82 -29
- package/.next/standalone/docs/built-in-policies.mdx +1 -1
- package/.next/standalone/docs/de/built-in-policies.mdx +93 -56
- package/.next/standalone/docs/de/custom-policies.mdx +56 -56
- package/.next/standalone/docs/de/examples.mdx +72 -18
- package/.next/standalone/docs/de/getting-started.mdx +72 -20
- package/.next/standalone/docs/es/built-in-policies.mdx +115 -78
- package/.next/standalone/docs/es/custom-policies.mdx +55 -55
- package/.next/standalone/docs/es/examples.mdx +73 -19
- package/.next/standalone/docs/es/getting-started.mdx +72 -20
- package/.next/standalone/docs/fr/built-in-policies.mdx +83 -46
- package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
- package/.next/standalone/docs/fr/examples.mdx +78 -24
- package/.next/standalone/docs/fr/getting-started.mdx +65 -13
- package/.next/standalone/docs/he/built-in-policies.mdx +156 -117
- package/.next/standalone/docs/he/custom-policies.mdx +75 -75
- package/.next/standalone/docs/he/examples.mdx +87 -33
- package/.next/standalone/docs/he/getting-started.mdx +84 -33
- package/.next/standalone/docs/hi/built-in-policies.mdx +101 -60
- package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
- package/.next/standalone/docs/hi/examples.mdx +90 -36
- package/.next/standalone/docs/hi/getting-started.mdx +80 -27
- package/.next/standalone/docs/i18n/README.ar.md +69 -69
- package/.next/standalone/docs/i18n/README.de.md +46 -46
- package/.next/standalone/docs/i18n/README.es.md +42 -42
- package/.next/standalone/docs/i18n/README.fr.md +39 -39
- package/.next/standalone/docs/i18n/README.he.md +83 -83
- package/.next/standalone/docs/i18n/README.hi.md +69 -69
- package/.next/standalone/docs/i18n/README.it.md +72 -72
- package/.next/standalone/docs/i18n/README.ja.md +71 -71
- package/.next/standalone/docs/i18n/README.ko.md +52 -52
- package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
- package/.next/standalone/docs/i18n/README.ru.md +66 -66
- package/.next/standalone/docs/i18n/README.tr.md +82 -83
- package/.next/standalone/docs/i18n/README.vi.md +70 -71
- package/.next/standalone/docs/i18n/README.zh.md +51 -51
- package/.next/standalone/docs/it/built-in-policies.mdx +118 -81
- package/.next/standalone/docs/it/custom-policies.mdx +69 -69
- package/.next/standalone/docs/it/examples.mdx +93 -39
- package/.next/standalone/docs/it/getting-started.mdx +73 -21
- package/.next/standalone/docs/ja/built-in-policies.mdx +98 -61
- package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
- package/.next/standalone/docs/ja/examples.mdx +76 -22
- package/.next/standalone/docs/ja/getting-started.mdx +65 -13
- package/.next/standalone/docs/ko/built-in-policies.mdx +137 -100
- package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
- package/.next/standalone/docs/ko/examples.mdx +87 -33
- package/.next/standalone/docs/ko/getting-started.mdx +61 -9
- package/.next/standalone/docs/pt-br/built-in-policies.mdx +94 -57
- package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
- package/.next/standalone/docs/pt-br/examples.mdx +78 -24
- package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
- package/.next/standalone/docs/ru/built-in-policies.mdx +142 -105
- package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
- package/.next/standalone/docs/ru/examples.mdx +77 -22
- package/.next/standalone/docs/ru/getting-started.mdx +74 -22
- package/.next/standalone/docs/tr/built-in-policies.mdx +104 -67
- package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
- package/.next/standalone/docs/tr/examples.mdx +97 -42
- package/.next/standalone/docs/tr/getting-started.mdx +75 -23
- package/.next/standalone/docs/vi/built-in-policies.mdx +110 -72
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
- package/.next/standalone/docs/vi/examples.mdx +93 -38
- package/.next/standalone/docs/vi/getting-started.mdx +74 -22
- package/.next/standalone/docs/zh/built-in-policies.mdx +132 -95
- package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
- package/.next/standalone/docs/zh/examples.mdx +90 -36
- package/.next/standalone/docs/zh/getting-started.mdx +73 -21
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/hooks/builtin-policies.ts +5 -1
- package/dist/cli.mjs +3 -3
- package/package.json +1 -1
- package/src/hooks/builtin-policies.ts +5 -1
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_ssgManifest.js +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: "כתוב כללים משלך ב-JavaScript - אכוף קונבנציות, מנע
|
|
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,54 +37,54 @@ failproofai policies --install --custom ./my-policies.js
|
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
## שתי דרכים לטעון
|
|
40
|
+
## שתי דרכים לטעון מדיניויות מותאמות אישית
|
|
41
41
|
|
|
42
42
|
### אפשרות 1: מבוססת קונבנציה (מומלץ)
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
שם קבצי `*policies.{js,mjs,ts}` ב-`.failproofai/policies/` והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה פועל כמו git hooks: שם קובץ, זה פשוט עובד.
|
|
45
45
|
|
|
46
46
|
```
|
|
47
|
-
#
|
|
47
|
+
# ברמת פרויקט — מחויב ב-git, משותף עם הצוות
|
|
48
48
|
.failproofai/policies/security-policies.mjs
|
|
49
49
|
.failproofai/policies/workflow-policies.mjs
|
|
50
50
|
|
|
51
|
-
#
|
|
51
|
+
# ברמת משתמש — אישי, חל על כל הפרויקטים
|
|
52
52
|
~/.failproofai/policies/my-policies.mjs
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**איך זה עובד:**
|
|
56
|
-
-
|
|
57
|
-
- קבצים נטענים
|
|
58
|
-
- רק קבצים
|
|
59
|
-
- כל קובץ נטען
|
|
60
|
-
- עובד לצד `--custom`
|
|
56
|
+
- שני הספריות של פרויקט ומשתמש סורקות (איחוד — לא first-scope-wins)
|
|
57
|
+
- קבצים נטענים באופן אלפביתי בכל ספרייה. הוסף קידומת עם `01-`, `02-` כדי לשלוט בסדר
|
|
58
|
+
- רק קבצים התואמים `*policies.{js,mjs,ts}` נטענים; קבצים אחרים מתעלמים
|
|
59
|
+
- כל קובץ נטען בנפרד (fail-open לכל קובץ)
|
|
60
|
+
- עובד לצד `--custom` מפורש ומדיניויות מובנות
|
|
61
61
|
|
|
62
62
|
<Tip>
|
|
63
|
-
|
|
63
|
+
מדיניויות קונבנציה הן הדרך הקלה ביותר לבנות תקן איכות עבור הארגון שלך. קבע `.failproofai/policies/` ל-git וכל חברי הצוות יקבלו את אותם כללים באופן אוטומטי — אין צורך בהתקנה לכל מפתח. כאשר הצוות שלך גוקל מצבי כשל חדשים, הוסף מדיניות ודחוף. עם הזמן אלה הופכים לתקן איכות חי המשתפר עם כל תרומה.
|
|
64
64
|
</Tip>
|
|
65
65
|
|
|
66
66
|
### אפשרות 2: נתיב קובץ מפורש
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
#
|
|
69
|
+
# התקן עם קובץ מדיניויות מותאם אישית
|
|
70
70
|
failproofai policies --install --custom ./my-policies.js
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
# החלף את נתיב קובץ המדיניויות
|
|
73
73
|
failproofai policies --install --custom ./new-policies.js
|
|
74
74
|
|
|
75
|
-
#
|
|
75
|
+
# הסר את נתיב המדיניויות המותאמות אישית מהתצורה
|
|
76
76
|
failproofai policies --uninstall --custom
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
הנתיב המוחלט
|
|
79
|
+
הנתיב המוחלט שנפתר מאוחסן ב-`policies-config.json` כ-`customPoliciesPath`. הקובץ נטען מחדש בכל אירוע hook - אין caching בין אירועים.
|
|
80
80
|
|
|
81
|
-
### שימוש בשניהם
|
|
81
|
+
### שימוש בשניהם יחד
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
מדיניויות קונבנציה וקובץ `--custom` מפורש יכולים להתקיים. סדר הטעינה:
|
|
84
84
|
|
|
85
|
-
1. קובץ `customPoliciesPath` מפורש (אם
|
|
86
|
-
2. קבצי קונבנציה פרויקט (`{cwd}/.failproofai/policies/`, אלפביתי)
|
|
87
|
-
3. קבצי קונבנציה משתמש (`~/.failproofai/policies/`, אלפביתי)
|
|
85
|
+
1. קובץ `customPoliciesPath` מפורש (אם מוגדר)
|
|
86
|
+
2. קבצי קונבנציה של פרויקט (`{cwd}/.failproofai/policies/`, אלפביתי)
|
|
87
|
+
3. קבצי קונבנציה של משתמש (`~/.failproofai/policies/`, אלפביתי)
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
|
@@ -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,32 +111,32 @@ customPolicies.add({
|
|
|
111
111
|
|
|
112
112
|
### עוזרי החלטה
|
|
113
113
|
|
|
114
|
-
| פונקציה |
|
|
114
|
+
| פונקציה | השפעה | השתמש כאשר |
|
|
115
115
|
|----------|--------|----------|
|
|
116
116
|
| `allow()` | אפשר את הפעולה בשקט | הפעולה בטוחה, לא צריך הודעה |
|
|
117
117
|
| `deny(message)` | חסום את הפעולה | הסוכן לא צריך לבצע פעולה זו |
|
|
118
|
-
| `instruct(message)` | הוסף הקשר ללא חסימה | תן לסוכן הקשר נוסף
|
|
118
|
+
| `instruct(message)` | הוסף הקשר ללא חסימה | תן לסוכן הקשר נוסף להישארות על המסלול |
|
|
119
119
|
|
|
120
|
-
`deny(message)` - ההודעה מופיעה
|
|
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)`
|
|
130
|
+
`allow(message)` מאפשרת את הפעולה **וגם** שולחת הודעה מידע חזרה לClaude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של מטפל ה-hook — אותה מנגנון המשמש `instruct`, אך שונה מבחינה סמנטית: זהו עדכון סטטוס, לא אזהרה.
|
|
131
131
|
|
|
132
|
-
| פונקציה |
|
|
132
|
+
| פונקציה | השפעה | השתמש כאשר |
|
|
133
133
|
|----------|--------|----------|
|
|
134
|
-
| `allow(message)` | אפשר ושלח הקשר
|
|
134
|
+
| `allow(message)` | אפשר ושלח הקשר לClaude | אשר שצ'ק עבר, או הסבר למה צ'ק דולג |
|
|
135
135
|
|
|
136
136
|
מקרי שימוש:
|
|
137
|
-
- **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר
|
|
138
|
-
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר
|
|
139
|
-
- **הודעות מרובות מצטברות:** אם
|
|
137
|
+
- **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר לClaude שהכל ירוק
|
|
138
|
+
- **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר לClaude למה צ'ק דולג כדי שיהיה לו הקשר מלא
|
|
139
|
+
- **הודעות מרובות מצטברות:** אם מספר מדיניויות כל אחת החזר `allow(message)`, כל ההודעות מחוברות עם שורות חדשות ומועברות ביחד
|
|
140
140
|
|
|
141
141
|
```js
|
|
142
142
|
customPolicies.add({
|
|
@@ -160,48 +160,48 @@ customPolicies.add({
|
|
|
160
160
|
| שדה | סוג | תיאור |
|
|
161
161
|
|-------|------|-------------|
|
|
162
162
|
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
163
|
-
| `toolName` | `string \| undefined` | הכלי
|
|
163
|
+
| `toolName` | `string \| undefined` | הכלי שנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
|
|
164
164
|
| `toolInput` | `Record<string, unknown> \| undefined` | פרמטרי הקלט של הכלי |
|
|
165
|
-
| `payload` | `Record<string, unknown>` |
|
|
166
|
-
| `session` | `SessionMetadata \| undefined` | הקשר
|
|
165
|
+
| `payload` | `Record<string, unknown>` | כל payload האירוע הגולמי מClaude Code |
|
|
166
|
+
| `session` | `SessionMetadata \| undefined` | הקשר הסשן (ראה להלן) |
|
|
167
167
|
|
|
168
168
|
### שדות `SessionMetadata`
|
|
169
169
|
|
|
170
170
|
| שדה | סוג | תיאור |
|
|
171
171
|
|-------|------|-------------|
|
|
172
|
-
| `sessionId` | `string` | Claude Code
|
|
173
|
-
| `cwd` | `string` |
|
|
174
|
-
| `transcriptPath` | `string` | נתיב לקובץ
|
|
172
|
+
| `sessionId` | `string` | מזהה סשן של Claude Code |
|
|
173
|
+
| `cwd` | `string` | ספריית העבודה של סשן Claude Code |
|
|
174
|
+
| `transcriptPath` | `string` | נתיב לקובץ תמליל JSONL של הסשן |
|
|
175
175
|
|
|
176
|
-
### סוגי
|
|
176
|
+
### סוגי אירועים
|
|
177
177
|
|
|
178
|
-
| אירוע | מתי זה
|
|
178
|
+
| אירוע | מתי זה נוסק | תוכן `toolInput` |
|
|
179
179
|
|-------|--------------|----------------------|
|
|
180
|
-
| `PreToolUse` | לפני Claude
|
|
181
|
-
| `PostToolUse` |
|
|
182
|
-
| `Notification` |
|
|
183
|
-
| `Stop` |
|
|
180
|
+
| `PreToolUse` | לפני שClaude מריץ כלי | הקלט של הכלי (למשל `{ command: "..." }` עבור Bash) |
|
|
181
|
+
| `PostToolUse` | אחרי שכלי משתלם | קלט הכלי + `tool_result` (הפלט) |
|
|
182
|
+
| `Notification` | כשClaude שולח התראה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים תמיד להחזיר `allow()`, הם לא יכולים לחסום התראות |
|
|
183
|
+
| `Stop` | כשסשן Claude מסתיים | ריק |
|
|
184
184
|
|
|
185
185
|
---
|
|
186
186
|
|
|
187
187
|
## סדר הערכה
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
מדיניויות מוערכות בסדר זה:
|
|
190
190
|
|
|
191
|
-
1.
|
|
192
|
-
2.
|
|
193
|
-
3.
|
|
194
|
-
4.
|
|
191
|
+
1. מדיניויות מובנות (בסדר הגדרה)
|
|
192
|
+
2. מדיניויות מותאמות אישית מפורשות מ-`customPoliciesPath` (בסדר `.add()`)
|
|
193
|
+
3. מדיניויות קונבנציה מפרויקט `.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
194
|
+
4. מדיניויות קונבנציה ממשתמש `~/.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
|
|
195
195
|
|
|
196
196
|
<Note>
|
|
197
|
-
`deny` הראשון מקצר את כל
|
|
197
|
+
`deny` הראשון מקצר את כל המדיניויות הלאחרונות. כל הודעות `instruct` מצטברות ומועברות ביחד.
|
|
198
198
|
</Note>
|
|
199
199
|
|
|
200
200
|
---
|
|
201
201
|
|
|
202
|
-
##
|
|
202
|
+
## ייבואים טרנזיטיביים
|
|
203
203
|
|
|
204
|
-
קבצי מדיניות
|
|
204
|
+
קבצי מדיניות מותאמות אישית יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:
|
|
205
205
|
|
|
206
206
|
```js
|
|
207
207
|
// my-policies.js
|
|
@@ -218,13 +218,13 @@ customPolicies.add({
|
|
|
218
218
|
});
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
כל
|
|
221
|
+
כל הייבואים היחסיים הניתנים להשגה מקובץ הכניסה נפתרים. זה מיושם על ידי שכתוב `from "failproofai"` ייבואים לנתיב dist בפועל וליצירת קבצי `.mjs` זמניים כדי להבטיח תאימות ESM.
|
|
222
222
|
|
|
223
223
|
---
|
|
224
224
|
|
|
225
225
|
## סינון סוג אירוע
|
|
226
226
|
|
|
227
|
-
השתמש
|
|
227
|
+
השתמש ב-`match.events` כדי להגביל מתי מדיניות נוסקת:
|
|
228
228
|
|
|
229
229
|
```js
|
|
230
230
|
customPolicies.add({
|
|
@@ -238,26 +238,26 @@ customPolicies.add({
|
|
|
238
238
|
});
|
|
239
239
|
```
|
|
240
240
|
|
|
241
|
-
השמט `match` לחלוטין כדי
|
|
241
|
+
השמט `match` לחלוטין כדי לנוקוב בכל סוג אירוע.
|
|
242
242
|
|
|
243
243
|
---
|
|
244
244
|
|
|
245
245
|
## טיפול בשגיאות ומצבי כשל
|
|
246
246
|
|
|
247
|
-
|
|
247
|
+
מדיניויות מותאמות אישית הן **fail-open**: שגיאות לעולם לא חוסמות מדיניויות מובנות או קורעות מטפל hook.
|
|
248
248
|
|
|
249
|
-
|
|
|
249
|
+
| כשל | התנהגות |
|
|
250
250
|
|---------|----------|
|
|
251
|
-
| `customPoliciesPath` לא מוגדר | אין
|
|
252
|
-
| קובץ לא נמצא | אזהרה רשומה ל-`~/.failproofai/hook.log`;
|
|
253
|
-
|
|
|
254
|
-
|
|
|
255
|
-
| `fn` זורק בזמן ריצה | שגיאה רשומה; hook
|
|
256
|
-
| `fn` לוקח יותר מ-10 שניות |
|
|
257
|
-
|
|
|
251
|
+
| `customPoliciesPath` לא מוגדר | אין מדיניויות מותאמות אישית מפורשות פועלות; מדיניויות קונבנציה ומובנות ממשיכות כרגיל |
|
|
252
|
+
| קובץ לא נמצא | אזהרה רשומה ל-`~/.failproofai/hook.log`; מובנות ממשיכות |
|
|
253
|
+
| שגיאה syntax/import (מפורשת) | שגיאה רשומה ל-`~/.failproofai/hook.log`; מדיניויות מותאמות אישית מפורשות דלג |
|
|
254
|
+
| שגיאה syntax/import (קונבנציה) | שגיאה רשומה; הקובץ הזה דלג, קבצי קונבנציה אחרים עדיין נטענים |
|
|
255
|
+
| `fn` זורק בזמן ריצה | שגיאה רשומה; ה-hook הזה מטופל כ-`allow`; hooks אחרים ממשיכים |
|
|
256
|
+
| `fn` לוקח יותר מ-10 שניות | Timeout רשום; מטופל כ-`allow` |
|
|
257
|
+
| ספריית קונבנציה חסרה | אין מדיניויות קונבנציה פועלות; אין שגיאה |
|
|
258
258
|
|
|
259
259
|
<Tip>
|
|
260
|
-
|
|
260
|
+
כדי לבצע ניפוי שגיאות של מדיניויות מותאמות אישית, צפה בקובץ היומן:
|
|
261
261
|
|
|
262
262
|
```bash
|
|
263
263
|
tail -f ~/.failproofai/hook.log
|
|
@@ -266,7 +266,7 @@ tail -f ~/.failproofai/hook.log
|
|
|
266
266
|
|
|
267
267
|
---
|
|
268
268
|
|
|
269
|
-
## דוגמה מלאה:
|
|
269
|
+
## דוגמה מלאה: מדיניויות מרובות
|
|
270
270
|
|
|
271
271
|
```js
|
|
272
272
|
// my-policies.js
|
|
@@ -323,14 +323,14 @@ export { customPolicies };
|
|
|
323
323
|
|
|
324
324
|
## דוגמאות
|
|
325
325
|
|
|
326
|
-
|
|
326
|
+
ספריית `examples/` מכילה קבצי מדיניות שמוכנים להרצה:
|
|
327
327
|
|
|
328
328
|
| קובץ | תוכן |
|
|
329
329
|
|------|----------|
|
|
330
|
-
| `examples/policies-basic.js` | חמש
|
|
331
|
-
| `examples/policies-advanced/index.js` | דפוסים מתקדמים:
|
|
332
|
-
| `examples/convention-policies/security-policies.mjs` |
|
|
333
|
-
| `examples/convention-policies/workflow-policies.mjs` |
|
|
330
|
+
| `examples/policies-basic.js` | חמש מדיניויות הפעלה המכסות מצבי כשל סוכן נפוצים |
|
|
331
|
+
| `examples/policies-advanced/index.js` | דפוסים מתקדמים: ייבואים טרנזיטיביים, קריאות אסינכרוניות, scrubbing פלט וhooks סיום סשן |
|
|
332
|
+
| `examples/convention-policies/security-policies.mjs` | מדיניויות אבטחה מבוססות קונבנציה (חסום כתיבות .env, מנע שכתוב היסטוריית git) |
|
|
333
|
+
| `examples/convention-policies/workflow-policies.mjs` | מדיניויות זרימת עבודה מבוססות קונבנציה (תזכורות בדיקה, ביקורת כתיבות קובץ) |
|
|
334
334
|
|
|
335
335
|
### שימוש בדוגמאות קובץ מפורשות
|
|
336
336
|
|
|
@@ -350,4 +350,4 @@ mkdir -p ~/.failproofai/policies
|
|
|
350
350
|
cp examples/convention-policies/*.mjs ~/.failproofai/policies/
|
|
351
351
|
```
|
|
352
352
|
|
|
353
|
-
אין צורך בפקודת התקנה — הקבצים
|
|
353
|
+
אין צורך בפקודת התקנה — הקבצים נוקטים באופן אוטומטי באירוע hook הבא.
|
|
@@ -4,13 +4,13 @@ description: "כיצד להגדיר hooks עבור Claude Code ו-Agents SDK"
|
|
|
4
4
|
icon: book-open
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
דוגמאות מוכנות לשימוש עבור תרחישים נפוצים. כל אחת מהן
|
|
7
|
+
דוגמאות מוכנות לשימוש עבור תרחישים נפוצים. כל אחת מהן מראה כיצד להתקין ומה לצפות.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## הגדרת hooks עבור Claude Code
|
|
12
12
|
|
|
13
|
-
Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://docs.anthropic.com/en/docs/claude-code/hooks)
|
|
13
|
+
Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks שלו](https://docs.anthropic.com/en/docs/claude-code/hooks). כאשר אתה מריץ `failproofai policies --install`, הוא רושם פקודות hook בקובץ `settings.json` של Claude Code שמופעלות בכל קריאת tool.
|
|
14
14
|
|
|
15
15
|
<Steps>
|
|
16
16
|
<Step title="התקן את failproofai">
|
|
@@ -18,24 +18,24 @@ Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://do
|
|
|
18
18
|
npm install -g failproofai
|
|
19
19
|
```
|
|
20
20
|
</Step>
|
|
21
|
-
<Step title="
|
|
21
|
+
<Step title="הפעל את כל המדיניויות המובנות">
|
|
22
22
|
```bash
|
|
23
23
|
failproofai policies --install
|
|
24
24
|
```
|
|
25
25
|
</Step>
|
|
26
|
-
<Step title="
|
|
26
|
+
<Step title="אמת שה-hooks רשומות">
|
|
27
27
|
```bash
|
|
28
28
|
cat ~/.claude/settings.json | grep failproofai
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
אתה אמור לראות ערכי hook עבור אירועי `PreToolUse`, `PostToolUse`, `Notification
|
|
31
|
+
אתה אמור לראות ערכי hook עבור אירועי `PreToolUse`, `PostToolUse`, `Notification` ו-`Stop`.
|
|
32
32
|
</Step>
|
|
33
33
|
<Step title="הרץ את Claude Code">
|
|
34
34
|
```bash
|
|
35
35
|
claude
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
המדיניויות פועלות כעת באופן אוטומטי בכל קריאת tool. נסה לבקש מ-Claude להריץ `sudo rm -rf /` - זה יחסום.
|
|
39
39
|
</Step>
|
|
40
40
|
</Steps>
|
|
41
41
|
|
|
@@ -43,7 +43,7 @@ Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://do
|
|
|
43
43
|
|
|
44
44
|
## הגדרת hooks עבור Agents SDK
|
|
45
45
|
|
|
46
|
-
אם אתה בונה עם [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk), אתה יכול להשתמש באותה מערכת hooks בצורה
|
|
46
|
+
אם אתה בונה עם [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk), אתה יכול להשתמש באותה מערכת hooks בצורה תוכנתית.
|
|
47
47
|
|
|
48
48
|
<Steps>
|
|
49
49
|
<Step title="התקן את failproofai בפרויקט שלך">
|
|
@@ -52,14 +52,14 @@ Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://do
|
|
|
52
52
|
```
|
|
53
53
|
</Step>
|
|
54
54
|
<Step title="הגדר hooks ב-agent שלך">
|
|
55
|
-
העבר פקודות hook בעת יצירת תהליך ה-agent שלך. ה-hooks
|
|
55
|
+
העבר פקודות hook בעת יצירת תהליך ה-agent שלך. ה-hooks מופעלים באותו אופן כמו ב-Claude Code - דרך stdin/stdout JSON:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
failproofai --hook PreToolUse # called before each tool
|
|
59
59
|
failproofai --hook PostToolUse # called after each tool
|
|
60
60
|
```
|
|
61
61
|
</Step>
|
|
62
|
-
<Step title="כתוב מדיניות מותאמת
|
|
62
|
+
<Step title="כתוב מדיניות מותאמת עבור ה-agent שלך">
|
|
63
63
|
```javascript
|
|
64
64
|
import { customPolicies, allow, deny } from "failproofai";
|
|
65
65
|
|
|
@@ -77,7 +77,7 @@ Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://do
|
|
|
77
77
|
});
|
|
78
78
|
```
|
|
79
79
|
</Step>
|
|
80
|
-
<Step title="התקן את המדיניות המותאמת
|
|
80
|
+
<Step title="התקן את המדיניות המותאמת">
|
|
81
81
|
```bash
|
|
82
82
|
failproofai policies --install --custom ./my-agent-policies.js
|
|
83
83
|
```
|
|
@@ -88,35 +88,35 @@ Failproof AI משתלב עם Claude Code דרך [מערכת ה-hooks](https://do
|
|
|
88
88
|
|
|
89
89
|
## חסום פקודות הרסניות
|
|
90
90
|
|
|
91
|
-
ההגדרה הנפוצה ביותר - מנע מ-agents לפעול
|
|
91
|
+
ההגדרה הנפוצה ביותר - מנע מ-agents לפעול בעלויות בלתי הפיכות.
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
94
|
failproofai policies --install block-sudo block-rm-rf block-force-push block-curl-pipe-sh
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
מה זה עושה:
|
|
98
|
-
- `block-sudo` - חוסם את כל
|
|
99
|
-
- `block-rm-rf` - חוסם מחיקת
|
|
98
|
+
- `block-sudo` - חוסם את כל הפקודות `sudo`
|
|
99
|
+
- `block-rm-rf` - חוסם מחיקת קבצים רקורסיבית
|
|
100
100
|
- `block-force-push` - חוסם `git push --force`
|
|
101
|
-
- `block-curl-pipe-sh` - חוסם
|
|
101
|
+
- `block-curl-pipe-sh` - חוסם צנרור של סקריפטים מרחוקים לקליפה
|
|
102
102
|
|
|
103
103
|
---
|
|
104
104
|
|
|
105
105
|
## מנע דליפת סודות
|
|
106
106
|
|
|
107
|
-
עצור agents מלראות או
|
|
107
|
+
עצור agents מלראות או להדליף אישורי גישה בפלט של tool.
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
110
|
failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
-
אלה
|
|
113
|
+
אלה מופעלות ב-`PostToolUse` - לאחר הרצת tool, הם מנקים את הפלט לפני שה-agent רואה זאת.
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
117
|
-
## קבל התראות Slack כאשר agents
|
|
117
|
+
## קבל התראות Slack כאשר agents זקוקים לתשומת לב
|
|
118
118
|
|
|
119
|
-
השתמש
|
|
119
|
+
השתמש ב-notification hook כדי להעביר התראות של תהיות ל-Slack.
|
|
120
120
|
|
|
121
121
|
```javascript
|
|
122
122
|
import { customPolicies, allow, instruct } from "failproofai";
|
|
@@ -150,7 +150,7 @@ customPolicies.add({
|
|
|
150
150
|
});
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
התקן
|
|
153
|
+
התקן זאת:
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
156
|
SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --custom ./slack-alerts.js
|
|
@@ -158,9 +158,9 @@ SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --c
|
|
|
158
158
|
|
|
159
159
|
---
|
|
160
160
|
|
|
161
|
-
## שמור agents בענף
|
|
161
|
+
## שמור על agents בענף
|
|
162
162
|
|
|
163
|
-
מנע מ-agents
|
|
163
|
+
מנע מ-agents לעבור לענפים אחרים או דחוף לענפים מוגנים.
|
|
164
164
|
|
|
165
165
|
```javascript
|
|
166
166
|
import { customPolicies, allow, deny } from "failproofai";
|
|
@@ -182,7 +182,7 @@ customPolicies.add({
|
|
|
182
182
|
|
|
183
183
|
---
|
|
184
184
|
|
|
185
|
-
## דרוש בדיקות לפני
|
|
185
|
+
## דרוש בדיקות לפני התחייבות
|
|
186
186
|
|
|
187
187
|
הזכר ל-agents להריץ בדיקות לפני commit.
|
|
188
188
|
|
|
@@ -206,11 +206,11 @@ customPolicies.add({
|
|
|
206
206
|
|
|
207
207
|
---
|
|
208
208
|
|
|
209
|
-
## נעל
|
|
209
|
+
## נעל מאגר ייצור
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
צרור תצורה ברמת פרויקט כדי שכל מפתח בצוות שלך יקבל את אותן מדיניויות.
|
|
212
212
|
|
|
213
|
-
צור `.failproofai/policies-config.json`
|
|
213
|
+
צור `.failproofai/policies-config.json` במאגר שלך:
|
|
214
214
|
|
|
215
215
|
```json
|
|
216
216
|
{
|
|
@@ -231,23 +231,77 @@ customPolicies.add({
|
|
|
231
231
|
}
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
-
לאחר מכן
|
|
234
|
+
לאחר מכן צרור זאת:
|
|
235
235
|
|
|
236
236
|
```bash
|
|
237
237
|
git add .failproofai/policies-config.json
|
|
238
238
|
git commit -m "Add failproofai team policies"
|
|
239
239
|
```
|
|
240
240
|
|
|
241
|
-
כל חברי הצוות שיש להם failproofai מותקן
|
|
241
|
+
כל חברי הצוות שיש להם failproofai מותקן יטיילו באופן אוטומטי כללים אלה.
|
|
242
242
|
|
|
243
243
|
---
|
|
244
244
|
|
|
245
|
-
##
|
|
245
|
+
## בנה קנס איכות בחברה עם מדיניויות קונבנציה
|
|
246
246
|
|
|
247
|
-
|
|
247
|
+
ההגדרה בעלת ההשפעה הרבה ביותר: צרור `.failproofai/policies/` למאגר שלך עם מדיניויות המותאמות לפרויקט שלך. כל חברי הצוות מקבלים אותן באופן אוטומטי — ללא פקודות התקנה, ללא שינויי תצורה.
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
<Steps>
|
|
250
|
+
<Step title="צור את הספרייה והוסף מדיניויות">
|
|
251
|
+
```bash
|
|
252
|
+
mkdir -p .failproofai/policies
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
```js
|
|
256
|
+
// .failproofai/policies/team-policies.mjs
|
|
257
|
+
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
258
|
+
|
|
259
|
+
// Enforce your team's preferred package manager
|
|
260
|
+
// (or enable the built-in prefer-package-manager policy instead)
|
|
261
|
+
customPolicies.add({
|
|
262
|
+
name: "enforce-bun",
|
|
263
|
+
match: { events: ["PreToolUse"] },
|
|
264
|
+
fn: async (ctx) => {
|
|
265
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
266
|
+
const cmd = String(ctx.toolInput?.command ?? "");
|
|
267
|
+
if (/\bnpm\b/.test(cmd)) return deny("Use bun instead of npm.");
|
|
268
|
+
return allow();
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
// Remind the agent to run tests before committing
|
|
273
|
+
customPolicies.add({
|
|
274
|
+
name: "test-before-commit",
|
|
275
|
+
match: { events: ["PreToolUse"] },
|
|
276
|
+
fn: async (ctx) => {
|
|
277
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
278
|
+
if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
|
|
279
|
+
return instruct("Run tests before committing.");
|
|
280
|
+
}
|
|
281
|
+
return allow();
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
```
|
|
285
|
+
</Step>
|
|
286
|
+
<Step title="צרור ל-git">
|
|
287
|
+
```bash
|
|
288
|
+
git add .failproofai/policies/
|
|
289
|
+
git commit -m "Add team quality policies"
|
|
290
|
+
```
|
|
291
|
+
</Step>
|
|
292
|
+
<Step title="המשך להשתפר">
|
|
293
|
+
כאשר הצוות שלך פוגע במצבי כישלון חדשים, הוסף מדיניויות ודחוף. כולם מקבלים את העדכון ב-`git pull` הבא שלהם. המדיניויות הללו הופכות לקנס איכות חי שגדל עם הצוות שלך.
|
|
294
|
+
</Step>
|
|
295
|
+
</Steps>
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## עוד דוגמאות
|
|
300
|
+
|
|
301
|
+
ספרייית [`examples/`](https://github.com/exospherehost/failproofai/tree/main/examples) במאגר מכילה:
|
|
302
|
+
|
|
303
|
+
| קובץ | מה הוא מראה |
|
|
250
304
|
|------|---------------|
|
|
251
|
-
| `policies-basic.js` |
|
|
252
|
-
| `policies-notification.js` | התראות Slack עבור התראות
|
|
253
|
-
| `policies-advanced/index.js` |
|
|
305
|
+
| `policies-basic.js` | מדיניויות מתחילים - חסום כתיבות ייצור, force-push, סקריפטים מנוביות |
|
|
306
|
+
| `policies-notification.js` | התראות Slack עבור התראות של תהיות וסיום הפעלה |
|
|
307
|
+
| `policies-advanced/index.js` | יבואים טרנזיטיביים, hooks אסינכרוניים, ניקוי פלט של PostToolUse, טיפול באירוע Stop |
|