failproofai 0.0.5 → 0.0.6-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +112 -0
  2. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
  3. package/.next/standalone/.next/BUILD_ID +1 -1
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/required-server-files.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  8. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  15. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  17. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  19. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  23. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  25. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/index.html +1 -1
  31. package/.next/standalone/.next/server/app/index.rsc +15 -15
  32. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  33. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  34. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  35. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  36. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  37. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  38. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  39. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  42. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  43. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  46. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  55. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  56. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a~g15g._.js → [root-of-the-server]__0rh.18_._.js} +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +6 -6
  67. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qn95h3._.js → [root-of-the-server]__0~kmh8w._.js} +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  73. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  74. package/.next/standalone/.next/server/pages/404.html +2 -2
  75. package/.next/standalone/.next/server/pages/500.html +1 -1
  76. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  78. package/.next/standalone/.next/static/chunks/{0sme4lkv.tgn-.js → 01b~z8f1ws0rk.js} +1 -1
  79. package/.next/standalone/.next/static/chunks/{0lgbwkfqmnsmc.js → 03rz6ykw-a2xi.js} +1 -1
  80. package/.next/standalone/.next/static/chunks/{17manv47o-~wp.js → 08t08igdql9yt.js} +1 -1
  81. package/.next/standalone/.next/static/chunks/09_k80d~cq2wg.js +4 -0
  82. package/.next/standalone/.next/static/chunks/{0ksdlt_1hucdm.js → 0bvhsa6zva2o..js} +1 -1
  83. package/.next/standalone/.next/static/chunks/{09ikntpt2-o9b.js → 0gbf4cphy8ksq.js} +1 -1
  84. package/.next/standalone/.next/static/chunks/{0yumumfzx_f27.js → 0v.yd0kg_ld3r.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/{13juklu.vksks.js → 0wlyoif4_kj_t.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{09e7drilkf1sn.js → 12simlrcfk3g2.js} +1 -1
  87. package/.next/standalone/.next/static/chunks/{0em7tspi4kylh.js → 12~yi9oj8av8p.js} +2 -2
  88. package/.next/standalone/.next/static/chunks/{turbopack-0r26pc8h0y_-e.js → turbopack-0o7k.hakttp4k.js} +1 -1
  89. package/.next/standalone/CHANGELOG.md +13 -0
  90. package/.next/standalone/README.md +2 -2
  91. package/.next/standalone/bun.lock +43 -85
  92. package/.next/standalone/dist/cli.mjs +107 -3
  93. package/.next/standalone/docs/ar/architecture.mdx +65 -64
  94. package/.next/standalone/docs/ar/configuration.mdx +42 -42
  95. package/.next/standalone/docs/ar/custom-policies.mdx +62 -64
  96. package/.next/standalone/docs/built-in-policies.mdx +37 -0
  97. package/.next/standalone/docs/custom-policies.mdx +1 -1
  98. package/.next/standalone/docs/de/architecture.mdx +92 -92
  99. package/.next/standalone/docs/de/configuration.mdx +34 -34
  100. package/.next/standalone/docs/de/custom-policies.mdx +49 -50
  101. package/.next/standalone/docs/es/architecture.mdx +72 -72
  102. package/.next/standalone/docs/es/configuration.mdx +25 -25
  103. package/.next/standalone/docs/es/custom-policies.mdx +48 -49
  104. package/.next/standalone/docs/examples.mdx +54 -0
  105. package/.next/standalone/docs/fr/architecture.mdx +53 -53
  106. package/.next/standalone/docs/fr/configuration.mdx +25 -25
  107. package/.next/standalone/docs/fr/custom-policies.mdx +42 -43
  108. package/.next/standalone/docs/getting-started.mdx +52 -0
  109. package/.next/standalone/docs/he/architecture.mdx +66 -66
  110. package/.next/standalone/docs/he/configuration.mdx +53 -52
  111. package/.next/standalone/docs/he/custom-policies.mdx +72 -73
  112. package/.next/standalone/docs/hi/architecture.mdx +106 -106
  113. package/.next/standalone/docs/hi/configuration.mdx +39 -39
  114. package/.next/standalone/docs/hi/custom-policies.mdx +75 -76
  115. package/.next/standalone/docs/i18n/README.ar.md +66 -66
  116. package/.next/standalone/docs/i18n/README.de.md +38 -38
  117. package/.next/standalone/docs/i18n/README.es.md +38 -38
  118. package/.next/standalone/docs/i18n/README.fr.md +42 -42
  119. package/.next/standalone/docs/i18n/README.he.md +67 -67
  120. package/.next/standalone/docs/i18n/README.hi.md +70 -70
  121. package/.next/standalone/docs/i18n/README.it.md +62 -62
  122. package/.next/standalone/docs/i18n/README.ja.md +54 -54
  123. package/.next/standalone/docs/i18n/README.ko.md +58 -58
  124. package/.next/standalone/docs/i18n/README.pt-br.md +43 -43
  125. package/.next/standalone/docs/i18n/README.ru.md +69 -69
  126. package/.next/standalone/docs/i18n/README.tr.md +76 -76
  127. package/.next/standalone/docs/i18n/README.vi.md +70 -70
  128. package/.next/standalone/docs/i18n/README.zh.md +52 -52
  129. package/.next/standalone/docs/it/architecture.mdx +54 -53
  130. package/.next/standalone/docs/it/configuration.mdx +44 -45
  131. package/.next/standalone/docs/it/custom-policies.mdx +76 -78
  132. package/.next/standalone/docs/ja/architecture.mdx +93 -93
  133. package/.next/standalone/docs/ja/configuration.mdx +47 -47
  134. package/.next/standalone/docs/ja/custom-policies.mdx +62 -63
  135. package/.next/standalone/docs/ko/architecture.mdx +66 -66
  136. package/.next/standalone/docs/ko/configuration.mdx +35 -35
  137. package/.next/standalone/docs/ko/custom-policies.mdx +71 -72
  138. package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
  139. package/.next/standalone/docs/pt-br/configuration.mdx +35 -35
  140. package/.next/standalone/docs/pt-br/custom-policies.mdx +60 -61
  141. package/.next/standalone/docs/ru/architecture.mdx +59 -60
  142. package/.next/standalone/docs/ru/configuration.mdx +52 -53
  143. package/.next/standalone/docs/ru/custom-policies.mdx +68 -69
  144. package/.next/standalone/docs/tr/architecture.mdx +124 -124
  145. package/.next/standalone/docs/tr/configuration.mdx +45 -46
  146. package/.next/standalone/docs/tr/custom-policies.mdx +75 -75
  147. package/.next/standalone/docs/vi/architecture.mdx +65 -64
  148. package/.next/standalone/docs/vi/configuration.mdx +41 -41
  149. package/.next/standalone/docs/vi/custom-policies.mdx +68 -69
  150. package/.next/standalone/docs/zh/architecture.mdx +67 -67
  151. package/.next/standalone/docs/zh/configuration.mdx +34 -34
  152. package/.next/standalone/docs/zh/custom-policies.mdx +53 -54
  153. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  154. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  155. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  156. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  157. package/.next/standalone/node_modules/next/dist/server/config-schema.js +10 -2
  158. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  159. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  160. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  161. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  162. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  163. package/.next/standalone/node_modules/next/dist/server/render.js +27 -20
  164. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  165. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  166. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  167. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  168. package/.next/standalone/node_modules/next/package.json +15 -15
  169. package/.next/standalone/package.json +2 -2
  170. package/.next/standalone/server.js +1 -1
  171. package/.next/standalone/src/hooks/builtin-policies.ts +131 -0
  172. package/README.md +2 -2
  173. package/dist/cli.mjs +107 -3
  174. package/package.json +2 -2
  175. package/src/hooks/builtin-policies.ts +131 -0
  176. package/.next/standalone/.next/static/chunks/0_yayar~bpphd.js +0 -4
  177. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_buildManifest.js +0 -0
  178. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_clientMiddlewareManifest.js +0 -0
  179. /package/.next/standalone/.next/static/{hYQM6iCWnF1W5XDpsIRhV → CkmOT-ZvDN-sVULinGVKT}/_ssgManifest.js +0 -0
@@ -1,11 +1,10 @@
1
1
  ---
2
- ---
3
- title: Criteri Personalizzati
4
- description: "Scrivi i tuoi criteri in JavaScript - applica convenzioni, previeni deviazioni, rilevai guasti, integra con sistemi esterni"
2
+ title: Politiche personalizzate
3
+ description: "Scrivi le tue politiche in JavaScript - applica convenzioni, previeni derive, rileva guasti, integrati con sistemi esterni"
5
4
  icon: code
6
5
  ---
7
6
 
8
- I criteri personalizzati ti permettono di scrivere regole per qualsiasi comportamento dell'agente: applica convenzioni di progetto, previeni deviazioni, blocca operazioni distruttive, rileva agenti bloccati, o integra con Slack, flussi di approvazione e altro. Usano lo stesso sistema di eventi hook e le decisioni `allow`, `deny`, `instruct` dei criteri integrati.
7
+ Le politiche personalizzate ti permettono di scrivere regole per qualsiasi comportamento dell'agente: applica convenzioni di progetto, previeni derive, blocca operazioni distruttive, rileva agenti bloccati, oppure integrati con Slack, flussi di approvazione e altro. Utilizzano lo stesso sistema di eventi hook e le stesse decisioni `allow`, `deny`, `instruct` delle politiche integrate.
9
8
 
10
9
  ---
11
10
 
@@ -38,14 +37,14 @@ failproofai policies --install --custom ./my-policies.js
38
37
 
39
38
  ---
40
39
 
41
- ## Due modi per caricare criteri personalizzati
40
+ ## Due modi per caricare politiche personalizzate
42
41
 
43
42
  ### Opzione 1: Basata su convenzione (consigliato)
44
43
 
45
- Inserisci i file `*policies.{js,mjs,ts}` in `.failproofai/policies/` e vengono caricati automaticamente — nessun flag o modifica di configurazione necessaria. Funziona come i git hook: inserisci un file e funziona.
44
+ Inserisci file `*policies.{js,mjs,ts}` in `.failproofai/policies/` e verranno caricati automaticamente — nessun flag o modifica della configurazione necessari. Funziona come i git hook: inserisci un file, e semplicemente funziona.
46
45
 
47
46
  ```
48
- # Livello di progetto — incluso in git, condiviso con il team
47
+ # Livello di progetto — commesso in git, condiviso con il team
49
48
  .failproofai/policies/security-policies.mjs
50
49
  .failproofai/policies/workflow-policies.mjs
51
50
 
@@ -54,44 +53,44 @@ Inserisci i file `*policies.{js,mjs,ts}` in `.failproofai/policies/` e vengono c
54
53
  ```
55
54
 
56
55
  **Come funziona:**
57
- - Entrambe le directory di progetto e utente vengono scansionate (unione — non primo ambito vince)
56
+ - Entrambe le directory di progetto e utente vengono scansionate (unione — non vince il primo ambito)
58
57
  - I file vengono caricati alfabeticamente all'interno di ogni directory. Aggiungi il prefisso `01-`, `02-` per controllare l'ordine
59
58
  - Solo i file che corrispondono a `*policies.{js,mjs,ts}` vengono caricati; gli altri file vengono ignorati
60
59
  - Ogni file viene caricato indipendentemente (fail-open per file)
61
- - Funziona insieme ai criteri espliciti `--custom` e integrati
60
+ - Funziona insieme alle politiche esplicite `--custom` e a quelle integrate
62
61
 
63
62
  <Tip>
64
- I criteri di convenzione sono il modo più semplice per condividere criteri tra un team. Includi `.failproofai/policies/` in git e ogni membro del team li otterrà automaticamente.
63
+ Le politiche di convenzione sono il modo più semplice per condividere politiche in un team. Esegui il commit di `.failproofai/policies/` in git e ogni membro del team le otterrà automaticamente.
65
64
  </Tip>
66
65
 
67
66
  ### Opzione 2: Percorso file esplicito
68
67
 
69
68
  ```bash
70
- # Installa con un file di criteri personalizzati
69
+ # Installa con un file di politiche personalizzate
71
70
  failproofai policies --install --custom ./my-policies.js
72
71
 
73
- # Sostituisci il percorso del file di criteri
72
+ # Sostituisci il percorso del file di politiche
74
73
  failproofai policies --install --custom ./new-policies.js
75
74
 
76
- # Rimuovi il percorso dei criteri personalizzati dalla configurazione
75
+ # Rimuovi il percorso delle politiche personalizzate dalla configurazione
77
76
  failproofai policies --uninstall --custom
78
77
  ```
79
78
 
80
- Il percorso assoluto risolto viene memorizzato in `policies-config.json` come `customPoliciesPath`. Il file viene caricato di nuovo ad ogni evento hook - non c'è caching tra gli eventi.
79
+ Il percorso assoluto risolto viene memorizzato in `policies-config.json` come `customPoliciesPath`. Il file viene caricato nuovamente ad ogni evento hook - non esiste cache tra gli eventi.
81
80
 
82
81
  ### Usare entrambi insieme
83
82
 
84
- I criteri di convenzione e il file esplicito `--custom` possono coesistere. Ordine di caricamento:
83
+ Le politiche di convenzione e il file esplicito `--custom` possono coesistere. Ordine di caricamento:
85
84
 
86
85
  1. File `customPoliciesPath` esplicito (se configurato)
87
- 2. File di convenzione di progetto (`{cwd}/.failproofai/policies/`, alfabetici)
88
- 3. File di convenzione utente (`~/.failproofai/policies/`, alfabetici)
86
+ 2. File di convenzione di progetto (`{cwd}/.failproofai/policies/`, alfabetico)
87
+ 3. File di convenzione utente (`~/.failproofai/policies/`, alfabetico)
89
88
 
90
89
  ---
91
90
 
92
91
  ## API
93
92
 
94
- ### Importazione
93
+ ### Import
95
94
 
96
95
  ```js
97
96
  import { customPolicies, allow, deny, instruct } from "failproofai";
@@ -99,46 +98,45 @@ import { customPolicies, allow, deny, instruct } from "failproofai";
99
98
 
100
99
  ### `customPolicies.add(hook)`
101
100
 
102
- Registra un criterio. Chiama questo tutte le volte che necessario per più criteri nello stesso file.
101
+ Registra una politica. Chiama questo metodo tutte le volte che è necessario per più politiche nello stesso file.
103
102
 
104
103
  ```ts
105
104
  customPolicies.add({
106
- name: string; // obbligatorio - identificatore univoco
107
- description?: string; // mostrato nell'output di `failproofai policies`
108
- match?: { events?: HookEventType[] }; // filtra per tipo di evento; ometti per corrispondere a tutti
105
+ name: string; // required - unique identifier
106
+ description?: string; // shown in `failproofai policies` output
107
+ match?: { events?: HookEventType[] }; // filter by event type; omit to match all
109
108
  fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
110
109
  });
111
110
  ```
112
111
 
113
- ### Helper di decisione
112
+ ### Helper per decisioni
114
113
 
115
- | Funzione | Effetto | Usa quando |
116
- |----------|--------|----------|
114
+ | Funzione | Effetto | Usare quando |
115
+ |----------|---------|----------|
117
116
  | `allow()` | Consenti l'operazione silenziosamente | L'azione è sicura, nessun messaggio necessario |
118
- | `deny(message)` | Blocca l'operazione | L'agente non dovrebbe compiere questa azione |
119
- | `instruct(message)` | Aggiungi contesto senza bloccare | Dai all'agente contesto aggiuntivo per rimanere in traccia |
117
+ | `deny(message)` | Blocca l'operazione | L'agente non dovrebbe intraprendere questa azione |
118
+ | `instruct(message)` | Aggiungi contesto senza bloccare | Fornisci all'agente contesto extra per restare in pista |
120
119
 
121
- `deny(message)` - il messaggio viene visualizzato a Claude con prefisso `"Blocked by failproofai:"`. Un singolo `deny` fa corto circuito di tutta la valutazione ulteriore.
120
+ `deny(message)` - il messaggio appare a Claude con prefisso `"Blocked by failproofai:"`. Un singolo `deny` interrompe la valutazione successiva.
122
121
 
123
122
  `instruct(message)` - il messaggio viene aggiunto al contesto di Claude per la chiamata dello strumento corrente. Tutti i messaggi `instruct` vengono accumulati e consegnati insieme.
124
123
 
125
124
  <Tip>
126
- Puoi aggiungere guidance extra a qualsiasi messaggio `deny` o `instruct` aggiungendo un campo `hint` in `policyParams` — nessuna modifica di codice necessaria. Questo funziona per i criteri personalizzati (`custom/`), di convenzione di progetto (`.failproofai-project/`), e di convenzione utente (`.failproofai-user/`) anche. Vedi [Configurazione → hint](/it/configuration#hint-cross-cutting) per i dettagli.
125
+ Puoi aggiungere guidance extra a qualsiasi messaggio `deny` o `instruct` aggiungendo un campo `hint` in `policyParams` — nessuna modifica del codice necessaria. Questo funziona anche per le politiche personalizzate (`custom/`), di convenzione di progetto (`.failproofai-project/`), e di convenzione utente (`.failproofai-user/`). Vedi [Configuration → hint](/it/configuration#hint-cross-cutting) per dettagli.
127
126
  </Tip>
128
127
 
129
- ### Messaggi di allow informativi
130
-
128
+ ### Messaggi informativi di consenso
131
129
 
132
- `allow(message)` consente l'operazione **e** invia un messaggio informativo indietro a Claude. Il messaggio viene consegnato come `additionalContext` nella risposta stdout del gestore dell'evento hook — lo stesso meccanismo usato da `instruct`, ma semanticamente diverso: è un aggiornamento di stato, non un avviso.
130
+ `allow(message)` consente l'operazione **e** invia un messaggio informativo a Claude. Il messaggio viene consegnato come `additionalContext` nella risposta stdout del gestore hook — lo stesso meccanismo utilizzato da `instruct`, ma semanticamente diverso: è un aggiornamento di stato, non un avviso.
133
131
 
134
- | Funzione | Effetto | Usa quando |
135
- |----------|--------|----------|
136
- | `allow(message)` | Consenti e invia contesto a Claude | Conferma che un controllo è passato, o spiega perché un controllo è stato saltato |
132
+ | Funzione | Effetto | Usare quando |
133
+ |----------|---------|----------|
134
+ | `allow(message)` | Consenti e invia contesto a Claude | Conferma che un controllo è stato superato, o spiega perché un controllo è stato saltato |
137
135
 
138
136
  Casi d'uso:
139
137
  - **Conferme di stato:** `allow("All CI checks passed.")` — dice a Claude che tutto è verde
140
- - **Spiegazioni fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — dice a Claude perché un controllo è stato saltato così ha il contesto completo
141
- - **Più messaggi si accumulano:** se più criteri ciascuno restituisce `allow(message)`, tutti i messaggi sono uniti con newline e consegnati insieme
138
+ - **Spiegazioni fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — dice a Claude perché un controllo è stato saltato in modo da avere il contesto completo
139
+ - **Più messaggi si accumulano:** se diverse politiche restituiscono `allow(message)`, tutti i messaggi vengono uniti con newline e consegnati insieme
142
140
 
143
141
  ```js
144
142
  customPolicies.add({
@@ -164,21 +162,21 @@ customPolicies.add({
164
162
  | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
165
163
  | `toolName` | `string \| undefined` | Lo strumento che viene chiamato (es. `"Bash"`, `"Write"`, `"Read"`) |
166
164
  | `toolInput` | `Record<string, unknown> \| undefined` | I parametri di input dello strumento |
167
- | `payload` | `Record<string, unknown>` | Payload di evento grezzo completo da Claude Code |
168
- | `session` | `SessionMetadata \| undefined` | Contesto di sessione (vedi sotto) |
165
+ | `payload` | `Record<string, unknown>` | Payload dell'evento grezzo completo da Claude Code |
166
+ | `session` | `SessionMetadata \| undefined` | Contesto della sessione (vedi sotto) |
169
167
 
170
168
  ### Campi `SessionMetadata`
171
169
 
172
170
  | Campo | Tipo | Descrizione |
173
171
  |-------|------|-------------|
174
- | `sessionId` | `string` | Identificatore di sessione Claude Code |
172
+ | `sessionId` | `string` | Identificatore della sessione Claude Code |
175
173
  | `cwd` | `string` | Directory di lavoro della sessione Claude Code |
176
- | `transcriptPath` | `string` | Percorso al file transcript JSONL della sessione |
174
+ | `transcriptPath` | `string` | Percorso del file transcript JSONL della sessione |
177
175
 
178
176
  ### Tipi di evento
179
177
 
180
- | Evento | Quando si attiva | Contenuti `toolInput` |
181
- |-------|--------------|----------------------|
178
+ | Evento | Quando viene attivato | Contenuti `toolInput` |
179
+ |--------|----------------------|-----|
182
180
  | `PreToolUse` | Prima che Claude esegua uno strumento | L'input dello strumento (es. `{ command: "..." }` per Bash) |
183
181
  | `PostToolUse` | Dopo che uno strumento si completa | L'input dello strumento + `tool_result` (l'output) |
184
182
  | `Notification` | Quando Claude invia una notifica | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - i hook devono sempre restituire `allow()`, non possono bloccare le notifiche |
@@ -188,22 +186,22 @@ customPolicies.add({
188
186
 
189
187
  ## Ordine di valutazione
190
188
 
191
- I criteri vengono valutati in questo ordine:
189
+ Le politiche vengono valutate in questo ordine:
192
190
 
193
- 1. Criteri integrati (in ordine di definizione)
194
- 2. Criteri personalizzati espliciti da `customPoliciesPath` (in ordine `.add()`)
195
- 3. Criteri di convenzione da `.failproofai/policies/` di progetto (file alfabetici, ordine `.add()` interno)
196
- 4. Criteri di convenzione da `~/.failproofai/policies/` utente (file alfabetici, ordine `.add()` interno)
191
+ 1. Politiche integrate (in ordine di definizione)
192
+ 2. Politiche personalizzate esplicite da `customPoliciesPath` (in ordine `.add()`)
193
+ 3. Politiche di convenzione da progetto `.failproofai/policies/` (file alfabetico, ordine `.add()` all'interno)
194
+ 4. Politiche di convenzione da utente `~/.failproofai/policies/` (file alfabetico, ordine `.add()` all'interno)
197
195
 
198
196
  <Note>
199
- Il primo `deny` fa corto circuito di tutti i criteri successivi. Tutti i messaggi `instruct` vengono accumulati e consegnati insieme.
197
+ Il primo `deny` interrompe tutte le politiche successive. Tutti i messaggi `instruct` vengono accumulati e consegnati insieme.
200
198
  </Note>
201
199
 
202
200
  ---
203
201
 
204
- ## Importazioni transitive
202
+ ## Import transitivi
205
203
 
206
- I file di criteri personalizzati possono importare moduli locali usando percorsi relativi:
204
+ I file di politiche personalizzate possono importare moduli locali utilizzando percorsi relativi:
207
205
 
208
206
  ```js
209
207
  // my-policies.js
@@ -220,13 +218,13 @@ customPolicies.add({
220
218
  });
221
219
  ```
222
220
 
223
- Tutte le importazioni relative raggiungibili dal file di entry vengono risolte. Questo viene implementato riscrivendo le importazioni `from "failproofai"` al percorso dist effettivo e creando file `.mjs` temporanei per assicurare la compatibilità ESM.
221
+ Tutti gli import relativi raggiungibili dal file di entry vengono risolti. Questo viene implementato riscrivendo gli import `from "failproofai"` al percorso dist effettivo e creando file `.mjs` temporanei per garantire la compatibilità ESM.
224
222
 
225
223
  ---
226
224
 
227
- ## Filtraggio del tipo di evento
225
+ ## Filtraggio per tipo di evento
228
226
 
229
- Usa `match.events` per limitare quando un criterio si attiva:
227
+ Usa `match.events` per limitare quando una politica si attiva:
230
228
 
231
229
  ```js
232
230
  customPolicies.add({
@@ -234,32 +232,32 @@ customPolicies.add({
234
232
  match: { events: ["Stop"] },
235
233
  fn: async (ctx) => {
236
234
  // Si attiva solo quando la sessione termina
237
- // ctx.session.transcriptPath contiene il log di sessione completo
235
+ // ctx.session.transcriptPath contiene il log della sessione completa
238
236
  return allow();
239
237
  },
240
238
  });
241
239
  ```
242
240
 
243
- Ometti `match` interamente per attivarsi su ogni tipo di evento.
241
+ Ometti completamente `match` per attivarsi su ogni tipo di evento.
244
242
 
245
243
  ---
246
244
 
247
- ## Gestione degli errori e modalità di errore
245
+ ## Gestione degli errori e modalità di fallimento
248
246
 
249
- I criteri personalizzati sono **fail-open**: gli errori non bloccano mai i criteri integrati o causano crash del gestore dell'hook.
247
+ Le politiche personalizzate sono **fail-open**: gli errori non bloccano mai le politiche integrate o bloccano il gestore hook.
250
248
 
251
249
  | Errore | Comportamento |
252
- |---------|----------|
253
- | `customPoliciesPath` non impostato | Nessun criterio personalizzato esplicito viene eseguito; i criteri di convenzione e integrati continuano normalmente |
254
- | File non trovato | Avviso registrato su `~/.failproofai/hook.log`; i criteri integrati continuano |
255
- | Errore di sintassi/importazione (esplicito) | Errore registrato su `~/.failproofai/hook.log`; criteri personalizzati espliciti saltati |
256
- | Errore di sintassi/importazione (convenzione) | Errore registrato; quel file saltato, altri file di convenzione ancora caricati |
257
- | `fn` lancia al runtime | Errore registrato; quel hook trattato come `allow`; altri hook continuano |
250
+ |--------|----------|
251
+ | `customPoliciesPath` non impostato | Nessuna politica personalizzata esplicita viene eseguita; le politiche di convenzione e gli integrati continuano normalmente |
252
+ | File non trovato | Avviso registrato in `~/.failproofai/hook.log`; gli integrati continuano |
253
+ | Errore di sintassi/import (esplicito) | Errore registrato in `~/.failproofai/hook.log`; le politiche personalizzate esplicite vengono saltate |
254
+ | Errore di sintassi/import (convenzione) | Errore registrato; quel file viene saltato, gli altri file di convenzione vengono ancora caricati |
255
+ | `fn` genera errore a runtime | Errore registrato; quel hook viene trattato come `allow`; altri hook continuano |
258
256
  | `fn` impiega più di 10s | Timeout registrato; trattato come `allow` |
259
- | Directory di convenzione mancante | Nessun criterio di convenzione viene eseguito; nessun errore |
257
+ | Directory di convenzione mancante | Nessuna politica di convenzione viene eseguita; nessun errore |
260
258
 
261
259
  <Tip>
262
- Per eseguire il debug degli errori di criteri personalizzati, guarda il file di log:
260
+ Per eseguire il debug degli errori di politiche personalizzate, osserva il file di log:
263
261
 
264
262
  ```bash
265
263
  tail -f ~/.failproofai/hook.log
@@ -268,13 +266,13 @@ tail -f ~/.failproofai/hook.log
268
266
 
269
267
  ---
270
268
 
271
- ## Esempio completo: più criteri
269
+ ## Esempio completo: più politiche
272
270
 
273
271
  ```js
274
272
  // my-policies.js
275
273
  import { customPolicies, allow, deny, instruct } from "failproofai";
276
274
 
277
- // Evita che l'agente scriva nella directory secrets/
275
+ // Prevent agent from writing to secrets/ directory
278
276
  customPolicies.add({
279
277
  name: "block-secrets-dir",
280
278
  description: "Prevent agent from writing to secrets/ directory",
@@ -287,7 +285,7 @@ customPolicies.add({
287
285
  },
288
286
  });
289
287
 
290
- // Tieni l'agente in traccia: verifica i test prima di committare
288
+ // Keep the agent on track: verify tests before committing
291
289
  customPolicies.add({
292
290
  name: "remind-test-before-commit",
293
291
  description: "Keep the agent on track: verify tests pass before committing",
@@ -302,7 +300,7 @@ customPolicies.add({
302
300
  },
303
301
  });
304
302
 
305
- // Previeni modifiche non pianificate alle dipendenze durante il freeze
303
+ // Prevent unplanned dependency changes during freeze
306
304
  customPolicies.add({
307
305
  name: "dependency-freeze",
308
306
  description: "Prevent unplanned dependency changes during freeze period",
@@ -325,14 +323,14 @@ export { customPolicies };
325
323
 
326
324
  ## Esempi
327
325
 
328
- La directory `examples/` contiene file di criteri pronti all'uso:
326
+ La directory `examples/` contiene file di politiche pronti all'uso:
329
327
 
330
328
  | File | Contenuti |
331
329
  |------|----------|
332
- | `examples/policies-basic.js` | Cinque criteri iniziali che coprono modalità di errore comuni dell'agente |
333
- | `examples/policies-advanced/index.js` | Schemi avanzati: importazioni transitive, chiamate asincrone, scrubbing di output, e hook di fine sessione |
334
- | `examples/convention-policies/security-policies.mjs` | Criteri di sicurezza basati su convenzione (blocca scritture .env, previeni riscrittura della cronologia git) |
335
- | `examples/convention-policies/workflow-policies.mjs` | Criteri di flusso di lavoro basati su convenzione (promemoria di test, file di scrittura di audit) |
330
+ | `examples/policies-basic.js` | Cinque politiche iniziali che coprono modalità di fallimento comuni dell'agente |
331
+ | `examples/policies-advanced/index.js` | Pattern avanzati: import transitivi, chiamate async, scrubbing dell'output, e hook di fine sessione |
332
+ | `examples/convention-policies/security-policies.mjs` | Politiche di sicurezza basate su convenzione (blocca scritture .env, previeni riscrittura della cronologia git) |
333
+ | `examples/convention-policies/workflow-policies.mjs` | Politiche di flusso di lavoro basate su convenzione (promemoria test, controllare scritture di file) |
336
334
 
337
335
  ### Uso di esempi di file espliciti
338
336
 
@@ -343,13 +341,13 @@ failproofai policies --install --custom ./examples/policies-basic.js
343
341
  ### Uso di esempi basati su convenzione
344
342
 
345
343
  ```bash
346
- # Copia a livello di progetto
344
+ # Copy to project level
347
345
  mkdir -p .failproofai/policies
348
346
  cp examples/convention-policies/*.mjs .failproofai/policies/
349
347
 
350
- # Oppure copia a livello di utente
348
+ # Or copy to user level
351
349
  mkdir -p ~/.failproofai/policies
352
350
  cp examples/convention-policies/*.mjs ~/.failproofai/policies/
353
351
  ```
354
352
 
355
- Nessun comando di installazione necessario — i file vengono prelevati automaticamente al prossimo evento hook.
353
+ Nessun comando install necessario — i file vengono ripresi automaticamente al prossimo evento hook.