failproofai 0.0.5-beta.0 → 0.0.6-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
  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]__0r6vvp5._.js → [root-of-the-server]__0.~fd7s._.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]__0z5dd-f._.js → [root-of-the-server]__0a.nuas._.js} +2 -2
  56. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.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/{0j_ivegn3i5wt.js → 0.z51twd.0l5z.js} +1 -1
  71. package/.next/standalone/.next/static/chunks/{04fpsjft~cje..js → 0hctoh28rg838.js} +1 -1
  72. package/.next/standalone/.next/static/chunks/{0.io32u7gjgsb.js → 0hplx-8c-4vpv.js} +1 -1
  73. package/.next/standalone/.next/static/chunks/{0yf_mmdukq6up.js → 0maq.q1t.ri85.js} +2 -2
  74. package/.next/standalone/.next/static/chunks/{0x8vagatq36_7.js → 0teq8wdh3po1n.js} +1 -1
  75. package/.next/standalone/.next/static/chunks/{04mtv9jnqknn3.js → 0uc0um_uz51m_.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/{0h4qcn40dunn7.js → 0ul6fk-z.6k-0.js} +1 -1
  77. package/.next/standalone/.next/static/chunks/{0kvldut6ndzyz.js → 0w9lwqy0-v1dk.js} +1 -1
  78. package/.next/standalone/CHANGELOG.md +9 -1
  79. package/.next/standalone/README.md +2 -2
  80. package/.next/standalone/dist/cli.mjs +19 -2
  81. package/.next/standalone/docs/ar/architecture.mdx +66 -65
  82. package/.next/standalone/docs/ar/configuration.mdx +42 -42
  83. package/.next/standalone/docs/ar/custom-policies.mdx +63 -68
  84. package/.next/standalone/docs/architecture.mdx +2 -2
  85. package/.next/standalone/docs/configuration.mdx +1 -1
  86. package/.next/standalone/docs/custom-policies.mdx +2 -6
  87. package/.next/standalone/docs/de/architecture.mdx +92 -92
  88. package/.next/standalone/docs/de/configuration.mdx +35 -35
  89. package/.next/standalone/docs/de/custom-policies.mdx +50 -54
  90. package/.next/standalone/docs/es/architecture.mdx +73 -73
  91. package/.next/standalone/docs/es/configuration.mdx +25 -25
  92. package/.next/standalone/docs/es/custom-policies.mdx +49 -53
  93. package/.next/standalone/docs/fr/architecture.mdx +55 -55
  94. package/.next/standalone/docs/fr/configuration.mdx +26 -26
  95. package/.next/standalone/docs/fr/custom-policies.mdx +42 -46
  96. package/.next/standalone/docs/he/architecture.mdx +67 -67
  97. package/.next/standalone/docs/he/configuration.mdx +53 -52
  98. package/.next/standalone/docs/he/custom-policies.mdx +73 -77
  99. package/.next/standalone/docs/hi/architecture.mdx +107 -107
  100. package/.next/standalone/docs/hi/configuration.mdx +39 -39
  101. package/.next/standalone/docs/hi/custom-policies.mdx +77 -81
  102. package/.next/standalone/docs/i18n/README.ar.md +66 -66
  103. package/.next/standalone/docs/i18n/README.de.md +40 -40
  104. package/.next/standalone/docs/i18n/README.es.md +40 -40
  105. package/.next/standalone/docs/i18n/README.fr.md +44 -44
  106. package/.next/standalone/docs/i18n/README.he.md +67 -67
  107. package/.next/standalone/docs/i18n/README.hi.md +71 -71
  108. package/.next/standalone/docs/i18n/README.it.md +63 -63
  109. package/.next/standalone/docs/i18n/README.ja.md +55 -55
  110. package/.next/standalone/docs/i18n/README.ko.md +59 -59
  111. package/.next/standalone/docs/i18n/README.pt-br.md +45 -45
  112. package/.next/standalone/docs/i18n/README.ru.md +71 -71
  113. package/.next/standalone/docs/i18n/README.tr.md +76 -76
  114. package/.next/standalone/docs/i18n/README.vi.md +71 -71
  115. package/.next/standalone/docs/i18n/README.zh.md +53 -53
  116. package/.next/standalone/docs/it/architecture.mdx +55 -54
  117. package/.next/standalone/docs/it/configuration.mdx +45 -46
  118. package/.next/standalone/docs/it/custom-policies.mdx +77 -82
  119. package/.next/standalone/docs/ja/architecture.mdx +93 -93
  120. package/.next/standalone/docs/ja/configuration.mdx +48 -48
  121. package/.next/standalone/docs/ja/custom-policies.mdx +63 -67
  122. package/.next/standalone/docs/ko/architecture.mdx +66 -66
  123. package/.next/standalone/docs/ko/configuration.mdx +36 -36
  124. package/.next/standalone/docs/ko/custom-policies.mdx +73 -77
  125. package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
  126. package/.next/standalone/docs/pt-br/configuration.mdx +36 -36
  127. package/.next/standalone/docs/pt-br/custom-policies.mdx +62 -66
  128. package/.next/standalone/docs/ru/architecture.mdx +59 -60
  129. package/.next/standalone/docs/ru/configuration.mdx +52 -53
  130. package/.next/standalone/docs/ru/custom-policies.mdx +70 -74
  131. package/.next/standalone/docs/tr/architecture.mdx +124 -124
  132. package/.next/standalone/docs/tr/configuration.mdx +46 -47
  133. package/.next/standalone/docs/tr/custom-policies.mdx +75 -78
  134. package/.next/standalone/docs/vi/architecture.mdx +65 -64
  135. package/.next/standalone/docs/vi/configuration.mdx +42 -42
  136. package/.next/standalone/docs/vi/custom-policies.mdx +68 -72
  137. package/.next/standalone/docs/zh/architecture.mdx +67 -67
  138. package/.next/standalone/docs/zh/configuration.mdx +35 -35
  139. package/.next/standalone/docs/zh/custom-policies.mdx +54 -58
  140. package/.next/standalone/package.json +1 -1
  141. package/.next/standalone/server.js +1 -1
  142. package/.next/standalone/src/hooks/builtin-policies.ts +30 -0
  143. package/README.md +2 -2
  144. package/dist/cli.mjs +19 -2
  145. package/package.json +1 -1
  146. package/src/hooks/builtin-policies.ts +30 -0
  147. /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_buildManifest.js +0 -0
  148. /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_clientMiddlewareManifest.js +0 -0
  149. /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_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
- ### Opzione 1: Basata su convenzione (consigliato, v0.0.2-beta.7+)
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,49 +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 (beta)
130
-
131
- <Note>
132
- `allow(message)` è una funzione beta disponibile da v0.0.2-beta.3. L'API potrebbe cambiare nelle versioni future. Le versioni precedenti supportano solo `allow()` senza argomenti.
133
- </Note>
128
+ ### Messaggi informativi di consenso
134
129
 
135
- `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.
136
131
 
137
- | Funzione | Effetto | Usa quando |
138
- |----------|--------|----------|
139
- | `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 |
140
135
 
141
136
  Casi d'uso:
142
137
  - **Conferme di stato:** `allow("All CI checks passed.")` — dice a Claude che tutto è verde
143
- - **Spiegazioni fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — dice a Claude perché un controllo è stato saltato così ha il contesto completo
144
- - **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
145
140
 
146
141
  ```js
147
142
  customPolicies.add({
@@ -167,21 +162,21 @@ customPolicies.add({
167
162
  | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
168
163
  | `toolName` | `string \| undefined` | Lo strumento che viene chiamato (es. `"Bash"`, `"Write"`, `"Read"`) |
169
164
  | `toolInput` | `Record<string, unknown> \| undefined` | I parametri di input dello strumento |
170
- | `payload` | `Record<string, unknown>` | Payload di evento grezzo completo da Claude Code |
171
- | `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) |
172
167
 
173
168
  ### Campi `SessionMetadata`
174
169
 
175
170
  | Campo | Tipo | Descrizione |
176
171
  |-------|------|-------------|
177
- | `sessionId` | `string` | Identificatore di sessione Claude Code |
172
+ | `sessionId` | `string` | Identificatore della sessione Claude Code |
178
173
  | `cwd` | `string` | Directory di lavoro della sessione Claude Code |
179
- | `transcriptPath` | `string` | Percorso al file transcript JSONL della sessione |
174
+ | `transcriptPath` | `string` | Percorso del file transcript JSONL della sessione |
180
175
 
181
176
  ### Tipi di evento
182
177
 
183
- | Evento | Quando si attiva | Contenuti `toolInput` |
184
- |-------|--------------|----------------------|
178
+ | Evento | Quando viene attivato | Contenuti `toolInput` |
179
+ |--------|----------------------|-----|
185
180
  | `PreToolUse` | Prima che Claude esegua uno strumento | L'input dello strumento (es. `{ command: "..." }` per Bash) |
186
181
  | `PostToolUse` | Dopo che uno strumento si completa | L'input dello strumento + `tool_result` (l'output) |
187
182
  | `Notification` | Quando Claude invia una notifica | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - i hook devono sempre restituire `allow()`, non possono bloccare le notifiche |
@@ -191,22 +186,22 @@ customPolicies.add({
191
186
 
192
187
  ## Ordine di valutazione
193
188
 
194
- I criteri vengono valutati in questo ordine:
189
+ Le politiche vengono valutate in questo ordine:
195
190
 
196
- 1. Criteri integrati (in ordine di definizione)
197
- 2. Criteri personalizzati espliciti da `customPoliciesPath` (in ordine `.add()`)
198
- 3. Criteri di convenzione da `.failproofai/policies/` di progetto (file alfabetici, ordine `.add()` interno)
199
- 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)
200
195
 
201
196
  <Note>
202
- 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.
203
198
  </Note>
204
199
 
205
200
  ---
206
201
 
207
- ## Importazioni transitive
202
+ ## Import transitivi
208
203
 
209
- 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:
210
205
 
211
206
  ```js
212
207
  // my-policies.js
@@ -223,13 +218,13 @@ customPolicies.add({
223
218
  });
224
219
  ```
225
220
 
226
- 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.
227
222
 
228
223
  ---
229
224
 
230
- ## Filtraggio del tipo di evento
225
+ ## Filtraggio per tipo di evento
231
226
 
232
- Usa `match.events` per limitare quando un criterio si attiva:
227
+ Usa `match.events` per limitare quando una politica si attiva:
233
228
 
234
229
  ```js
235
230
  customPolicies.add({
@@ -237,32 +232,32 @@ customPolicies.add({
237
232
  match: { events: ["Stop"] },
238
233
  fn: async (ctx) => {
239
234
  // Si attiva solo quando la sessione termina
240
- // ctx.session.transcriptPath contiene il log di sessione completo
235
+ // ctx.session.transcriptPath contiene il log della sessione completa
241
236
  return allow();
242
237
  },
243
238
  });
244
239
  ```
245
240
 
246
- Ometti `match` interamente per attivarsi su ogni tipo di evento.
241
+ Ometti completamente `match` per attivarsi su ogni tipo di evento.
247
242
 
248
243
  ---
249
244
 
250
- ## Gestione degli errori e modalità di errore
245
+ ## Gestione degli errori e modalità di fallimento
251
246
 
252
- 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.
253
248
 
254
249
  | Errore | Comportamento |
255
- |---------|----------|
256
- | `customPoliciesPath` non impostato | Nessun criterio personalizzato esplicito viene eseguito; i criteri di convenzione e integrati continuano normalmente |
257
- | File non trovato | Avviso registrato su `~/.failproofai/hook.log`; i criteri integrati continuano |
258
- | Errore di sintassi/importazione (esplicito) | Errore registrato su `~/.failproofai/hook.log`; criteri personalizzati espliciti saltati |
259
- | Errore di sintassi/importazione (convenzione) | Errore registrato; quel file saltato, altri file di convenzione ancora caricati |
260
- | `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 |
261
256
  | `fn` impiega più di 10s | Timeout registrato; trattato come `allow` |
262
- | 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 |
263
258
 
264
259
  <Tip>
265
- 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:
266
261
 
267
262
  ```bash
268
263
  tail -f ~/.failproofai/hook.log
@@ -271,13 +266,13 @@ tail -f ~/.failproofai/hook.log
271
266
 
272
267
  ---
273
268
 
274
- ## Esempio completo: più criteri
269
+ ## Esempio completo: più politiche
275
270
 
276
271
  ```js
277
272
  // my-policies.js
278
273
  import { customPolicies, allow, deny, instruct } from "failproofai";
279
274
 
280
- // Evita che l'agente scriva nella directory secrets/
275
+ // Prevent agent from writing to secrets/ directory
281
276
  customPolicies.add({
282
277
  name: "block-secrets-dir",
283
278
  description: "Prevent agent from writing to secrets/ directory",
@@ -290,7 +285,7 @@ customPolicies.add({
290
285
  },
291
286
  });
292
287
 
293
- // Tieni l'agente in traccia: verifica i test prima di committare
288
+ // Keep the agent on track: verify tests before committing
294
289
  customPolicies.add({
295
290
  name: "remind-test-before-commit",
296
291
  description: "Keep the agent on track: verify tests pass before committing",
@@ -305,7 +300,7 @@ customPolicies.add({
305
300
  },
306
301
  });
307
302
 
308
- // Previeni modifiche non pianificate alle dipendenze durante il freeze
303
+ // Prevent unplanned dependency changes during freeze
309
304
  customPolicies.add({
310
305
  name: "dependency-freeze",
311
306
  description: "Prevent unplanned dependency changes during freeze period",
@@ -328,14 +323,14 @@ export { customPolicies };
328
323
 
329
324
  ## Esempi
330
325
 
331
- La directory `examples/` contiene file di criteri pronti all'uso:
326
+ La directory `examples/` contiene file di politiche pronti all'uso:
332
327
 
333
328
  | File | Contenuti |
334
329
  |------|----------|
335
- | `examples/policies-basic.js` | Cinque criteri iniziali che coprono modalità di errore comuni dell'agente |
336
- | `examples/policies-advanced/index.js` | Schemi avanzati: importazioni transitive, chiamate asincrone, scrubbing di output, e hook di fine sessione |
337
- | `examples/convention-policies/security-policies.mjs` | Criteri di sicurezza basati su convenzione (blocca scritture .env, previeni riscrittura della cronologia git) |
338
- | `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) |
339
334
 
340
335
  ### Uso di esempi di file espliciti
341
336
 
@@ -346,13 +341,13 @@ failproofai policies --install --custom ./examples/policies-basic.js
346
341
  ### Uso di esempi basati su convenzione
347
342
 
348
343
  ```bash
349
- # Copia a livello di progetto
344
+ # Copy to project level
350
345
  mkdir -p .failproofai/policies
351
346
  cp examples/convention-policies/*.mjs .failproofai/policies/
352
347
 
353
- # Oppure copia a livello di utente
348
+ # Or copy to user level
354
349
  mkdir -p ~/.failproofai/policies
355
350
  cp examples/convention-policies/*.mjs ~/.failproofai/policies/
356
351
  ```
357
352
 
358
- 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.