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.
Files changed (160) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +4 -3
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  11. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  14. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  21. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  22. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  23. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  25. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  27. package/.next/standalone/.next/server/app/index.html +1 -1
  28. package/.next/standalone/.next/server/app/index.rsc +15 -15
  29. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  30. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  31. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  32. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  33. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  34. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  35. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  38. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  41. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  44. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  48. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  52. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0~kmh8w._.js → [root-of-the-server]__05akje6._.js} +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  55. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0rh.18_._.js → [root-of-the-server]__0i5kvry._.js} +2 -2
  58. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  65. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  66. package/.next/standalone/.next/server/pages/404.html +2 -2
  67. package/.next/standalone/.next/server/pages/500.html +1 -1
  68. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  70. package/.next/standalone/.next/static/chunks/{08t08igdql9yt.js → 00j0rr7rh8ef8.js} +1 -1
  71. package/.next/standalone/.next/static/chunks/{12~yi9oj8av8p.js → 05j1px0r8yzh6.js} +2 -2
  72. package/.next/standalone/.next/static/chunks/{09_k80d~cq2wg.js → 0badv41uxa56..js} +1 -1
  73. package/.next/standalone/.next/static/chunks/{0wlyoif4_kj_t.js → 0ijk_kek9_wyx.js} +1 -1
  74. package/.next/standalone/.next/static/chunks/{0bvhsa6zva2o..js → 0ksdlt_1hucdm.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{03rz6ykw-a2xi.js → 0npb~873.wvg3.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{01b~z8f1ws0rk.js → 0xpl.oscrakvx.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0gbf4cphy8ksq.js → 1052sguyd-.ka.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0v.yd0kg_ld3r.js → 14cl9poem30dq.js} +1 -1
  79. package/.next/standalone/CHANGELOG.md +11 -0
  80. package/.next/standalone/dist/cli.mjs +3 -3
  81. package/.next/standalone/docs/ar/built-in-policies.mdx +124 -87
  82. package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
  83. package/.next/standalone/docs/ar/examples.mdx +86 -33
  84. package/.next/standalone/docs/ar/getting-started.mdx +82 -29
  85. package/.next/standalone/docs/built-in-policies.mdx +1 -1
  86. package/.next/standalone/docs/de/built-in-policies.mdx +93 -56
  87. package/.next/standalone/docs/de/custom-policies.mdx +56 -56
  88. package/.next/standalone/docs/de/examples.mdx +72 -18
  89. package/.next/standalone/docs/de/getting-started.mdx +72 -20
  90. package/.next/standalone/docs/es/built-in-policies.mdx +115 -78
  91. package/.next/standalone/docs/es/custom-policies.mdx +55 -55
  92. package/.next/standalone/docs/es/examples.mdx +73 -19
  93. package/.next/standalone/docs/es/getting-started.mdx +72 -20
  94. package/.next/standalone/docs/fr/built-in-policies.mdx +83 -46
  95. package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
  96. package/.next/standalone/docs/fr/examples.mdx +78 -24
  97. package/.next/standalone/docs/fr/getting-started.mdx +65 -13
  98. package/.next/standalone/docs/he/built-in-policies.mdx +156 -117
  99. package/.next/standalone/docs/he/custom-policies.mdx +75 -75
  100. package/.next/standalone/docs/he/examples.mdx +87 -33
  101. package/.next/standalone/docs/he/getting-started.mdx +84 -33
  102. package/.next/standalone/docs/hi/built-in-policies.mdx +101 -60
  103. package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
  104. package/.next/standalone/docs/hi/examples.mdx +90 -36
  105. package/.next/standalone/docs/hi/getting-started.mdx +80 -27
  106. package/.next/standalone/docs/i18n/README.ar.md +69 -69
  107. package/.next/standalone/docs/i18n/README.de.md +46 -46
  108. package/.next/standalone/docs/i18n/README.es.md +42 -42
  109. package/.next/standalone/docs/i18n/README.fr.md +39 -39
  110. package/.next/standalone/docs/i18n/README.he.md +83 -83
  111. package/.next/standalone/docs/i18n/README.hi.md +69 -69
  112. package/.next/standalone/docs/i18n/README.it.md +72 -72
  113. package/.next/standalone/docs/i18n/README.ja.md +71 -71
  114. package/.next/standalone/docs/i18n/README.ko.md +52 -52
  115. package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
  116. package/.next/standalone/docs/i18n/README.ru.md +66 -66
  117. package/.next/standalone/docs/i18n/README.tr.md +82 -83
  118. package/.next/standalone/docs/i18n/README.vi.md +70 -71
  119. package/.next/standalone/docs/i18n/README.zh.md +51 -51
  120. package/.next/standalone/docs/it/built-in-policies.mdx +118 -81
  121. package/.next/standalone/docs/it/custom-policies.mdx +69 -69
  122. package/.next/standalone/docs/it/examples.mdx +93 -39
  123. package/.next/standalone/docs/it/getting-started.mdx +73 -21
  124. package/.next/standalone/docs/ja/built-in-policies.mdx +98 -61
  125. package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
  126. package/.next/standalone/docs/ja/examples.mdx +76 -22
  127. package/.next/standalone/docs/ja/getting-started.mdx +65 -13
  128. package/.next/standalone/docs/ko/built-in-policies.mdx +137 -100
  129. package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
  130. package/.next/standalone/docs/ko/examples.mdx +87 -33
  131. package/.next/standalone/docs/ko/getting-started.mdx +61 -9
  132. package/.next/standalone/docs/pt-br/built-in-policies.mdx +94 -57
  133. package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
  134. package/.next/standalone/docs/pt-br/examples.mdx +78 -24
  135. package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
  136. package/.next/standalone/docs/ru/built-in-policies.mdx +142 -105
  137. package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
  138. package/.next/standalone/docs/ru/examples.mdx +77 -22
  139. package/.next/standalone/docs/ru/getting-started.mdx +74 -22
  140. package/.next/standalone/docs/tr/built-in-policies.mdx +104 -67
  141. package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
  142. package/.next/standalone/docs/tr/examples.mdx +97 -42
  143. package/.next/standalone/docs/tr/getting-started.mdx +75 -23
  144. package/.next/standalone/docs/vi/built-in-policies.mdx +110 -72
  145. package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
  146. package/.next/standalone/docs/vi/examples.mdx +93 -38
  147. package/.next/standalone/docs/vi/getting-started.mdx +74 -22
  148. package/.next/standalone/docs/zh/built-in-policies.mdx +132 -95
  149. package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
  150. package/.next/standalone/docs/zh/examples.mdx +90 -36
  151. package/.next/standalone/docs/zh/getting-started.mdx +73 -21
  152. package/.next/standalone/package.json +1 -1
  153. package/.next/standalone/server.js +1 -1
  154. package/.next/standalone/src/hooks/builtin-policies.ts +5 -1
  155. package/dist/cli.mjs +3 -3
  156. package/package.json +1 -1
  157. package/src/hooks/builtin-policies.ts +5 -1
  158. /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_buildManifest.js +0 -0
  159. /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_clientMiddlewareManifest.js +0 -0
  160. /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
- מדיניות מותאמות אישית מאפשרת לך לכתוב כללים לכל התנהגות סוכן: אכוף קונבנציות פרויקט, מנע סחיפה, תגדור פעולות הרסניות, גלה סוכנים תקועים, או היווצרות קשור עם Slack, זרימות אישור, ועוד. הם משתמשים באותה מערכת אירוע hook ובהחלטות `allow`, `deny`, `instruct` כמו מדיניות מובנית.
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
- שים קבצים `*policies.{js,mjs,ts}` ב-`.failproofai/policies/` והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה עובד כמו git hooks: שים קובץ, זה פשוט עובד.
44
+ שם קבצי `*policies.{js,mjs,ts}` ב-`.failproofai/policies/` והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה פועל כמו git hooks: שם קובץ, זה פשוט עובד.
45
45
 
46
46
  ```
47
- # Project levelcommitted to git, shared with the team
47
+ # ברמת פרויקטמחויב ב-git, משותף עם הצוות
48
48
  .failproofai/policies/security-policies.mjs
49
49
  .failproofai/policies/workflow-policies.mjs
50
50
 
51
- # User levelpersonal, applies to all projects
51
+ # ברמת משתמשאישי, חל על כל הפרויקטים
52
52
  ~/.failproofai/policies/my-policies.mjs
53
53
  ```
54
54
 
55
55
  **איך זה עובד:**
56
- - שתי ספריות פרויקט ומשתמש סורקות (איחוד — לא ראשון-סקופ-ינצחון)
57
- - קבצים נטענים בסדר אלפביתי בתוך כל ספרייה. הוספת קידומת עם `01-`, `02-` לשליטה בסדר
58
- - רק קבצים המתאימים ל-`*policies.{js,mjs,ts}` נטענים; קבצים אחרים מתעלמים
59
- - כל קובץ נטען באופן עצמאי (fail-open לכל קובץ)
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
- מדיניות קונבנציה היא הדרך הקלה ביותר לשתף מדיניות בכל הקבוצה. Commit `.failproofai/policies/` ל-git וכל חברי הקבוצה מקבלים אותם באופן אוטומטי.
63
+ מדיניויות קונבנציה הן הדרך הקלה ביותר לבנות תקן איכות עבור הארגון שלך. קבע `.failproofai/policies/` ל-git וכל חברי הצוות יקבלו את אותם כללים באופן אוטומטי — אין צורך בהתקנה לכל מפתח. כאשר הצוות שלך גוקל מצבי כשל חדשים, הוסף מדיניות ודחוף. עם הזמן אלה הופכים לתקן איכות חי המשתפר עם כל תרומה.
64
64
  </Tip>
65
65
 
66
66
  ### אפשרות 2: נתיב קובץ מפורש
67
67
 
68
68
  ```bash
69
- # Install with a custom policies file
69
+ # התקן עם קובץ מדיניויות מותאם אישית
70
70
  failproofai policies --install --custom ./my-policies.js
71
71
 
72
- # Replace the policies file path
72
+ # החלף את נתיב קובץ המדיניויות
73
73
  failproofai policies --install --custom ./new-policies.js
74
74
 
75
- # Remove the custom policies path from config
75
+ # הסר את נתיב המדיניויות המותאמות אישית מהתצורה
76
76
  failproofai policies --uninstall --custom
77
77
  ```
78
78
 
79
- הנתיב המוחלט שהוסדר מאוחסן ב-`policies-config.json` כ-`customPoliciesPath`. הקובץ נטען טרי בכל אירוע hook - אין שומרון בין אירועים.
79
+ הנתיב המוחלט שנפתר מאוחסן ב-`policies-config.json` כ-`customPoliciesPath`. הקובץ נטען מחדש בכל אירוע hook - אין caching בין אירועים.
80
80
 
81
- ### שימוש בשניהם ביחד
81
+ ### שימוש בשניהם יחד
82
82
 
83
- מדיניות קונבנציה וקובץ `--custom` מפורש יכולים להתקיים זה לצד זה. סדר טעינה:
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)` - ההודעה מופיעה ל-Claude עם קידומת `"Blocked by failproofai:"`. ערך `deny` יחיד מקצר את כל ההערכה הנוספת.
120
+ `deny(message)` - ההודעה מופיעה לClaude עם קידומת `"Blocked by failproofai:"`. `deny` יחיד מקצר את כל ההערכה הנוספת.
121
121
 
122
- `instruct(message)` - ההודעה מוספת להקשר של Claude לקריאת הכלי הנוכחית. כל הודעות `instruct` מצטברות ומועברות ביחד.
122
+ `instruct(message)` - ההודעה מצורפת להקשר של Claude לקריאת הכלי הנוכחית. כל הודעות `instruct` מצטברות ומועברות ביחד.
123
123
 
124
124
  <Tip>
125
- אתה יכול להוסיף הדרכה נוספת לכל הודעת `deny` או `instruct` על ידי הוספת שדה `hint` ב-`policyParams` — אין צורך בשינוי קוד. זה עובד עבור מדיניות מותאמת אישית (`custom/`), מדיניות קונבנציה פרויקט (`.failproofai-project/`), ומדיניות קונבנציה משתמש (`.failproofai-user/`) גם כן. ראה [Configuration → hint](/he/configuration#hint-cross-cutting) לפרטים.
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
+ `allow(message)` מאפשרת את הפעולה **וגם** שולחת הודעה מידע חזרה לClaude. ההודעה מועברת כ-`additionalContext` בתגובת stdout של מטפל ה-hook — אותה מנגנון המשמש `instruct`, אך שונה מבחינה סמנטית: זהו עדכון סטטוס, לא אזהרה.
131
131
 
132
- | פונקציה | אפקט | השתמש כאשר |
132
+ | פונקציה | השפעה | השתמש כאשר |
133
133
  |----------|--------|----------|
134
- | `allow(message)` | אפשר ושלח הקשר ל-Claude | אשר שצ'ק עבר, או הסבר למה צ'ק דולק |
134
+ | `allow(message)` | אפשר ושלח הקשר לClaude | אשר שצ'ק עבר, או הסבר למה צ'ק דולג |
135
135
 
136
136
  מקרי שימוש:
137
- - **אישורי סטטוס:** `allow("All CI checks passed.")` — אומר ל-Claude שהכל ירוק
138
- - **הסברי fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — אומר ל-Claude למה צ'ק דולק כדי שיהיה להם הקשר מלא
139
- - **הודעות מרובות מצטברות:** אם מדיניות מרובות מחזירות כל אחת `allow(message)`, כל ההודעות משולבות עם שורות חדשות ומועברות ביחד
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` | הכלי הנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
163
+ | `toolName` | `string \| undefined` | הכלי שנקרא (למשל `"Bash"`, `"Write"`, `"Read"`) |
164
164
  | `toolInput` | `Record<string, unknown> \| undefined` | פרמטרי הקלט של הכלי |
165
- | `payload` | `Record<string, unknown>` | חומלת עומס של אירוע גולמי מלא מ-Claude Code |
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` | ספרייה עובדת של הפעילות Claude Code |
174
- | `transcriptPath` | `string` | נתיב לקובץ תמלול JSONL של הפעילות |
172
+ | `sessionId` | `string` | מזהה סשן של Claude Code |
173
+ | `cwd` | `string` | ספריית העבודה של סשן Claude Code |
174
+ | `transcriptPath` | `string` | נתיב לקובץ תמליל JSONL של הסשן |
175
175
 
176
- ### סוגי אירוע
176
+ ### סוגי אירועים
177
177
 
178
- | אירוע | מתי זה מתעורר | תוכן `toolInput` |
178
+ | אירוע | מתי זה נוסק | תוכן `toolInput` |
179
179
  |-------|--------------|----------------------|
180
- | `PreToolUse` | לפני Claude מפעיל כלי | קלט הכלי (למשל `{ command: "..." }` עבור Bash) |
181
- | `PostToolUse` | לאחר השלמת כלי | קלט הכלי + `tool_result` (הפלט) |
182
- | `Notification` | כאשר Claude שולח הודעה | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks חייבים להחזיר תמיד `allow()`, הם לא יכולים חסום הודעות |
183
- | `Stop` | כאשר הפעילות Claude מסתיימת | ריק |
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. מדיניות מותאמת אישית מפורשת מ-`customPoliciesPath` (בסדר `.add()`)
193
- 3. מדיניות קונבנציה מפרויקט `.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
194
- 4. מדיניות קונבנציה מ-`~/.failproofai/policies/` משתמש (קבצים אלפביתיים, סדר `.add()` בתוך)
191
+ 1. מדיניויות מובנות (בסדר הגדרה)
192
+ 2. מדיניויות מותאמות אישית מפורשות מ-`customPoliciesPath` (בסדר `.add()`)
193
+ 3. מדיניויות קונבנציה מפרויקט `.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
194
+ 4. מדיניויות קונבנציה ממשתמש `~/.failproofai/policies/` (קבצים אלפביתיים, סדר `.add()` בתוך)
195
195
 
196
196
  <Note>
197
- `deny` הראשון מקצר את כל המדיניות הבאות. כל הודעות `instruct` מצטברות ומועברות ביחד.
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
- כל היבואות היחסיות הנגישות מקובץ הכניסה מוסדרות. זה מיושם על ידי כתיבה מחדש `from "failproofai"` ייבואים לנתיב dist בפועל ויצירת קבצים זמניים `.mjs` כדי להבטיח תאימות ESM.
221
+ כל הייבואים היחסיים הניתנים להשגה מקובץ הכניסה נפתרים. זה מיושם על ידי שכתוב `from "failproofai"` ייבואים לנתיב dist בפועל וליצירת קבצי `.mjs` זמניים כדי להבטיח תאימות ESM.
222
222
 
223
223
  ---
224
224
 
225
225
  ## סינון סוג אירוע
226
226
 
227
- השתמש `match.events` כדי להגביל מתי מדיניות מתעוררת:
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
- מדיניות מותאמת אישית היא **fail-open**: שגיאות לא חוסמות מדיניות מובנית וגם לא קורסות את מטפל ה-hook.
247
+ מדיניויות מותאמות אישית הן **fail-open**: שגיאות לעולם לא חוסמות מדיניויות מובנות או קורעות מטפל hook.
248
248
 
249
- | כישלון | התנהגות |
249
+ | כשל | התנהגות |
250
250
  |---------|----------|
251
- | `customPoliciesPath` לא מוגדר | אין מדיניות מותאמת אישית מפורשת מתוך; מדיניות קונבנציה ומובנית ממשיכות כרגיל |
252
- | קובץ לא נמצא | אזהרה רשומה ל-`~/.failproofai/hook.log`; מובנה ממשיך |
253
- | שגיאת תחביר/ייבוא (מפורש) | שגיאה רשומה ל-`~/.failproofai/hook.log`; מדיניות מותאמת אישית מפורשת דלק |
254
- | שגיאת תחביר/ייבוא (קונבנציה) | שגיאה רשומה; קובץ זה דלק, קבצי קונבנציה אחרים עדיין נטענים |
255
- | `fn` זורק בזמן ריצה | שגיאה רשומה; hook זה מטופל כ-`allow`; hook אחרים ממשיכים |
256
- | `fn` לוקח יותר מ-10 שניות | timeout רשומה; מטופל כ-`allow` |
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
- ספרייה `examples/` מכילה קבצי מדיניות מוכנים להפעלה:
326
+ ספריית `examples/` מכילה קבצי מדיניות שמוכנים להרצה:
327
327
 
328
328
  | קובץ | תוכן |
329
329
  |------|----------|
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` | מדיניות זרימת עבודה מבוססת קונבנציה (תזכורות בדיקה, כתיבות קובץ ביקורת) |
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
- אין צורך בפקודת התקנה — הקבצים נאספים באופן אוטומטי בעלון ה-hook הבא.
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) שלו. כאשר אתה מריץ `failproofai policies --install`, הוא רושם פקודות hook בקובץ `settings.json` של Claude Code שמופעלות בכל קריאת כלי.
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="וודא שה-hooks רשומים">
26
+ <Step title="אמת שה-hooks רשומות">
27
27
  ```bash
28
28
  cat ~/.claude/settings.json | grep failproofai
29
29
  ```
30
30
 
31
- אתה אמור לראות ערכי hook עבור אירועי `PreToolUse`, `PostToolUse`, `Notification`, ו-`Stop`.
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
- המדיניות פועלת כעת באופן אוטומטי בכל קריאת כלי. נסה לבקש מ-Claude להריץ `sudo rm -rf /` - זה יחסום.
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 פועלים באותו אופן כמו ב-Claude Code - דרך JSON של stdin/stdout:
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="כתוב מדיניות מותאמת אישית עבור ה-agent שלך">
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` - חוסם את כל פקודות `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
- אלה פועלים על `PostToolUse` - לאחר הרצת כלי, הם מנקים את הפלט לפני שה-agent רואה זאת.
113
+ אלה מופעלות ב-`PostToolUse` - לאחר הרצת tool, הם מנקים את הפלט לפני שה-agent רואה זאת.
114
114
 
115
115
  ---
116
116
 
117
- ## קבל התראות Slack כאשר agents צריכים תשומת לב
117
+ ## קבל התראות Slack כאשר agents זקוקים לתשומת לב
118
118
 
119
- השתמש בה-notification hook כדי להעביר התראות במצב חמלה ל-Slack.
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
- ## דרוש בדיקות לפני commits
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
- בצע commit לקונפיג ברמת פרויקט כדי שלכל מפתח בצוות שלך תהיה אותה מדיניות.
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
- לאחר מכן בצע commit:
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
- תיקיית [`examples/`](https://github.com/exospherehost/failproofai/tree/main/examples) בריפוזיטוריום מכילה:
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` | מדיניות התחלתית - חסום כתיבה בייצור, force-push, סקריפטים צנורים |
252
- | `policies-notification.js` | התראות Slack עבור התראות במצב חמלה וסיום הפעילות |
253
- | `policies-advanced/index.js` | יבוא טרנזיטיבי, hooks אסינכרונים, ניקוי פלט PostToolUse, טיפול באירוע Stop |
305
+ | `policies-basic.js` | מדיניויות מתחילים - חסום כתיבות ייצור, force-push, סקריפטים מנוביות |
306
+ | `policies-notification.js` | התראות Slack עבור התראות של תהיות וסיום הפעלה |
307
+ | `policies-advanced/index.js` | יבואים טרנזיטיביים, hooks אסינכרוניים, ניקוי פלט של PostToolUse, טיפול באירוע Stop |