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
@@ -4,7 +4,7 @@ description: "Formato do arquivo de configuração, sistema de três escopos e r
4
4
  icon: gear
5
5
  ---
6
6
 
7
- failproofai usa arquivos de configuração JSON para controlar quais políticas estão ativas, como elas se comportam e de onde as políticas personalizadas são carregadas. A configuração foi pensada para ser fácil de compartilhar com o time — faça commit dela no seu repositório e todos os desenvolvedores terão a mesma rede de segurança para agentes.
7
+ failproofai utiliza arquivos de configuração JSON para controlar quais políticas estão ativas, como elas se comportam e de onde políticas customizadas são carregadas. A configuração foi projetada para ser fácil de compartilhar com o time — faça o commit no repositório e todos os desenvolvedores terão a mesma rede de segurança para o agente.
8
8
 
9
9
  ---
10
10
 
@@ -13,12 +13,12 @@ failproofai usa arquivos de configuração JSON para controlar quais políticas
13
13
  Existem três escopos de configuração, avaliados em ordem de prioridade:
14
14
 
15
15
  | Escopo | Caminho do arquivo | Finalidade |
16
- |--------|-------------------|------------|
16
+ |--------|--------------------|------------|
17
17
  | **project** | `.failproofai/policies-config.json` | Configurações por repositório, commitadas no controle de versão |
18
18
  | **local** | `.failproofai/policies-config.local.json` | Substituições pessoais por repositório, ignoradas pelo git |
19
- | **global** | `~/.failproofai/policies-config.json` | Padrões do usuário para todos os projetos |
19
+ | **global** | `~/.failproofai/policies-config.json` | Padrões do usuário aplicados a todos os projetos |
20
20
 
21
- Quando failproofai recebe um evento de hook, ele carrega e mescla os três arquivos que existirem para o diretório de trabalho atual.
21
+ Quando failproofai recebe um evento de hook, ele carrega e mescla todos os três arquivos existentes para o diretório de trabalho atual.
22
22
 
23
23
  ### Regras de mesclagem
24
24
 
@@ -32,26 +32,26 @@ global: ["block-sudo", "sanitize-api-keys"]
32
32
  resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"] ← união sem duplicatas
33
33
  ```
34
34
 
35
- **`policyParams`** — o primeiro escopo que define os parâmetros de uma determinada política vence por completo. Não há mesclagem profunda dos valores dentro dos parâmetros de uma política.
35
+ **`policyParams`** — o primeiro escopo que define parâmetros para uma determinada política prevalece completamente. Não há mesclagem profunda de valores dentro dos parâmetros de uma política.
36
36
 
37
37
  ```text
38
38
  project: block-sudo → { allowPatterns: ["sudo apt-get update"] }
39
39
  global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
40
40
 
41
- resolved: { allowPatterns: ["sudo apt-get update"] } ← project vence, global é ignorado
41
+ resolved: { allowPatterns: ["sudo apt-get update"] } ← project prevalece, global ignorado
42
42
  ```
43
43
 
44
44
  ```text
45
- project: (sem entrada block-sudo)
46
- local: (sem entrada block-sudo)
45
+ project: (sem entrada para block-sudo)
46
+ local: (sem entrada para block-sudo)
47
47
  global: block-sudo → { allowPatterns: ["sudo systemctl status"] }
48
48
 
49
- resolved: { allowPatterns: ["sudo systemctl status"] } ← recai para o global
49
+ resolved: { allowPatterns: ["sudo systemctl status"] } ← cai para o global
50
50
  ```
51
51
 
52
- **`customPoliciesPath`** — o primeiro escopo que o define vence.
52
+ **`customPoliciesPath`** — o primeiro escopo que o definir prevalece.
53
53
 
54
- **`llm`** — o primeiro escopo que o define vence.
54
+ **`llm`** — o primeiro escopo que o definir prevalece.
55
55
 
56
56
  ---
57
57
 
@@ -102,46 +102,46 @@ resolved: { allowPatterns: ["sudo systemctl status"] } ← recai para o global
102
102
 
103
103
  Tipo: `string[]`
104
104
 
105
- Lista de nomes de políticas a habilitar. Os nomes devem corresponder exatamente aos identificadores de política exibidos por `failproofai policies`. Consulte [Políticas integradas](/pt-br/built-in-policies) para a lista completa.
105
+ Lista de nomes de políticas a habilitar. Os nomes devem corresponder exatamente aos identificadores de política exibidos por `failproofai policies`. Consulte [Políticas Integradas](/pt-br/built-in-policies) para a lista completa.
106
106
 
107
- Políticas ausentes de `enabledPolicies` ficam inativas, mesmo que possuam entradas em `policyParams`.
107
+ Políticas que não estão em `enabledPolicies` ficam inativas, mesmo que possuam entradas em `policyParams`.
108
108
 
109
109
  ### `policyParams`
110
110
 
111
111
  Tipo: `Record<string, Record<string, unknown>>`
112
112
 
113
- Substituições de parâmetros por política. A chave externa é o nome da política; as chaves internas são específicas de cada política. Cada política documenta seus parâmetros disponíveis em [Políticas integradas](/pt-br/built-in-policies).
113
+ Substituições de parâmetros por política. A chave externa é o nome da política; as chaves internas são específicas de cada política. Cada política documenta seus parâmetros disponíveis em [Políticas Integradas](/pt-br/built-in-policies).
114
114
 
115
- Se uma política possui parâmetros mas você não os especifica, os valores padrão da política são utilizados. Usuários que não configuram `policyParams` têm comportamento idêntico ao das versões anteriores.
115
+ Se uma política possui parâmetros, mas você não os especifica, os padrões integrados da política são utilizados. Usuários que não configuram `policyParams` obtêm comportamento idêntico ao das versões anteriores.
116
116
 
117
- Chaves desconhecidas dentro do bloco de parâmetros de uma política são silenciosamente ignoradas no momento de disparo do hook, mas sinalizadas como avisos ao executar `failproofai policies`.
117
+ Chaves desconhecidas dentro do bloco de parâmetros de uma política são silenciosamente ignoradas no momento do disparo do hook, mas sinalizadas como avisos quando você executa `failproofai policies`.
118
118
 
119
119
  #### `hint` (transversal)
120
120
 
121
121
  Tipo: `string` (opcional)
122
122
 
123
- Uma mensagem anexada ao motivo quando uma política retorna `deny` ou `instruct`. Use-o para fornecer orientações acionáveis ao Claude sem modificar a própria política.
123
+ Uma mensagem anexada ao motivo quando uma política retorna `deny` ou `instruct`. Use para fornecer orientações acionáveis ao Claude sem modificar a política em si.
124
124
 
125
- Funciona com qualquer tipo de política — integrada, personalizada (`custom/`), convenção de projeto (`.failproofai-project/`) ou convenção de usuário (`.failproofai-user/`).
125
+ Funciona com qualquer tipo de política — integrada, customizada (`custom/`), convenção de projeto (`.failproofai-project/`) ou convenção do usuário (`.failproofai-user/`).
126
126
 
127
127
  ```json
128
128
  {
129
129
  "policyParams": {
130
130
  "block-force-push": {
131
- "hint": "Tente criar um branch novo em vez disso."
131
+ "hint": "Try creating a fresh branch instead."
132
132
  },
133
133
  "block-sudo": {
134
134
  "allowPatterns": ["sudo apt-get"],
135
- "hint": "Use apt-get diretamente sem sudo."
135
+ "hint": "Use apt-get directly without sudo."
136
136
  },
137
137
  "custom/my-policy": {
138
- "hint": "Peça aprovação ao usuário primeiro."
138
+ "hint": "Ask the user for approval first."
139
139
  }
140
140
  }
141
141
  }
142
142
  ```
143
143
 
144
- Quando `block-force-push` nega, Claude recebe: *"Force-pushing está bloqueado. Tente criar um branch novo em vez disso."*
144
+ Quando `block-force-push` nega, Claude vê: *"Force-pushing is blocked. Try creating a fresh branch instead."*
145
145
 
146
146
  Valores não textuais e strings vazias são silenciosamente ignorados. Se `hint` não estiver definido, o comportamento permanece inalterado (compatível com versões anteriores).
147
147
 
@@ -149,32 +149,32 @@ Valores não textuais e strings vazias são silenciosamente ignorados. Se `hint`
149
149
 
150
150
  Tipo: `string` (caminho absoluto)
151
151
 
152
- Caminho para um arquivo JavaScript contendo políticas de hook personalizadas. Esse campo é definido automaticamente por `failproofai policies --install --custom <path>` (o caminho é resolvido para absoluto antes de ser armazenado).
152
+ Caminho para um arquivo JavaScript contendo políticas de hook customizadas. Este valor é definido automaticamente por `failproofai policies --install --custom <path>` (o caminho é resolvido para absoluto antes de ser armazenado).
153
153
 
154
- O arquivo é carregado novamente a cada evento de hook — não há cache. Consulte [Políticas personalizadas](/pt-br/custom-policies) para detalhes de autoria.
154
+ O arquivo é carregado novamente a cada evento de hook — não há cache. Consulte [Políticas Customizadas](/pt-br/custom-policies) para detalhes sobre como criá-las.
155
155
 
156
156
  ### Políticas baseadas em convenção
157
157
 
158
- Além do `customPoliciesPath` explícito, failproofai descobre e carrega automaticamente arquivos de políticas dos diretórios `.failproofai/policies/`:
158
+ Além do `customPoliciesPath` explícito, failproofai descobre e carrega automaticamente arquivos de política dos diretórios `.failproofai/policies/`:
159
159
 
160
160
  | Nível | Diretório | Escopo |
161
161
  |-------|-----------|--------|
162
162
  | Projeto | `.failproofai/policies/` | Compartilhado com o time via controle de versão |
163
- | Usuário | `~/.failproofai/policies/` | Pessoal, aplica-se a todos os projetos |
163
+ | Usuário | `~/.failproofai/policies/` | Pessoal, aplicado a todos os projetos |
164
164
 
165
- **Correspondência de arquivos:** Apenas arquivos que correspondam a `*policies.{js,mjs,ts}` são carregados (por exemplo, `security-policies.mjs`, `workflow-policies.js`). Outros arquivos no diretório são ignorados.
165
+ **Correspondência de arquivos:** Somente arquivos que correspondam a `*policies.{js,mjs,ts}` são carregados (ex.: `security-policies.mjs`, `workflow-policies.js`). Outros arquivos no diretório são ignorados.
166
166
 
167
- **Sem necessidade de configuração:** Políticas de convenção não exigem entradas em `policies-config.json`. Basta adicionar os arquivos ao diretório e eles serão detectados no próximo evento de hook.
167
+ **Sem necessidade de configuração:** Políticas de convenção não requerem entradas em `policies-config.json`. Basta colocar os arquivos no diretório e eles serão detectados no próximo evento de hook.
168
168
 
169
- **Carregamento por união:** Os diretórios de convenção do projeto e do usuário são varridos. Todos os arquivos correspondentes de ambos os níveis são carregados (ao contrário de `customPoliciesPath`, que usa o primeiro escopo vencedor).
169
+ **Carregamento por união:** Tanto o diretório de convenção do projeto quanto o do usuário são verificados. Todos os arquivos correspondentes de ambos os níveis são carregados (ao contrário de `customPoliciesPath`, que utiliza o primeiro escopo que prevalece).
170
170
 
171
- Consulte [Políticas personalizadas](/pt-br/custom-policies) para mais detalhes e exemplos.
171
+ Consulte [Políticas Customizadas](/pt-br/custom-policies) para mais detalhes e exemplos.
172
172
 
173
173
  ### `llm`
174
174
 
175
175
  Tipo: `object` (opcional)
176
176
 
177
- Configuração do cliente LLM para políticas que fazem chamadas de IA. Não é necessário para a maioria dos casos.
177
+ Configuração do cliente LLM para políticas que realizam chamadas de IA. Não é necessário para a maioria das configurações.
178
178
 
179
179
  ```json
180
180
  {
@@ -192,15 +192,15 @@ Configuração do cliente LLM para políticas que fazem chamadas de IA. Não é
192
192
  Os comandos `policies --install` e `policies --uninstall` escrevem no `settings.json` do Claude Code (os pontos de entrada do hook), enquanto `policies-config.json` é o arquivo que você gerencia diretamente. Os dois são separados:
193
193
 
194
194
  - **`settings.json`** — instrui o Claude Code a chamar `failproofai --hook <event>` a cada uso de ferramenta
195
- - **`policies-config.json`** — instrui o failproofai sobre quais políticas avaliar e com quais parâmetros
195
+ - **`policies-config.json`** — instrui failproofai sobre quais políticas avaliar e com quais parâmetros
196
196
 
197
197
  Você pode editar `policies-config.json` diretamente a qualquer momento; as alterações entram em vigor imediatamente no próximo evento de hook, sem necessidade de reinicialização.
198
198
 
199
199
  ---
200
200
 
201
- ## Exemplo: configuração no nível do projeto com padrões do time
201
+ ## Exemplo: configuração no nível do projeto com padrões da equipe
202
202
 
203
- Faça commit de `.failproofai/policies-config.json` no seu repositório:
203
+ Faça o commit de `.failproofai/policies-config.json` no seu repositório:
204
204
 
205
205
  ```json
206
206
  {
@@ -219,4 +219,4 @@ Faça commit de `.failproofai/policies-config.json` no seu repositório:
219
219
  }
220
220
  ```
221
221
 
222
- Cada desenvolvedor pode então criar `.failproofai/policies-config.local.json` (ignorado pelo git) para substituições pessoais sem afetar os colegas de time.
222
+ Cada desenvolvedor pode então criar `.failproofai/policies-config.local.json` (ignorado pelo git) para substituições pessoais sem afetar os colegas de equipe.
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  title: Políticas Personalizadas
3
- description: "Escreva suas próprias políticas em JavaScript - aplique convenções, previna desvios, detecte falhas, integre com sistemas externos"
3
+ description: "Escreva suas próprias políticas em JavaScript - aplique convenções, evite desvios, detecte falhas e integre com sistemas externos"
4
4
  icon: code
5
5
  ---
6
6
 
7
- As políticas personalizadas permitem que você escreva regras para qualquer comportamento do agente: aplicar convenções do projeto, prevenir desvios, controlar operações destrutivas, detectar agentes travados ou integrar com Slack, fluxos de aprovação e muito mais. Elas usam o mesmo sistema de eventos de hook e as decisões `allow`, `deny`, `instruct` das políticas embutidas.
7
+ As políticas personalizadas permitem que você escreva regras para qualquer comportamento do agente: aplicar convenções do projeto, evitar desvios, bloquear operações destrutivas, detectar agentes travados ou integrar com Slack, fluxos de aprovação e muito mais. Elas utilizam o mesmo sistema de eventos de hook e as decisões `allow`, `deny`, `instruct` das políticas integradas.
8
8
 
9
9
  ---
10
10
 
@@ -41,32 +41,32 @@ failproofai policies --install --custom ./my-policies.js
41
41
 
42
42
  ### Opção 1: Baseada em convenção (recomendada)
43
43
 
44
- Coloque arquivos `*policies.{js,mjs,ts}` dentro de `.failproofai/policies/` e eles serão carregados automaticamente — sem flags ou alterações de configuração. Funciona como git hooks: coloque o arquivo e pronto.
44
+ Coloque arquivos `*policies.{js,mjs,ts}` na pasta `.failproofai/policies/` e eles serão carregados automaticamente — sem flags ou alterações de configuração. Funciona como git hooks: basta adicionar o arquivo e pronto.
45
45
 
46
46
  ```
47
- # Nível do projeto — commitado no git, compartilhado com o time
47
+ # Nível de projeto — versionado no git, compartilhado com a equipe
48
48
  .failproofai/policies/security-policies.mjs
49
49
  .failproofai/policies/workflow-policies.mjs
50
50
 
51
- # Nível do usuário — pessoal, aplicado a todos os projetos
51
+ # Nível de usuário — pessoal, aplicado a todos os projetos
52
52
  ~/.failproofai/policies/my-policies.mjs
53
53
  ```
54
54
 
55
55
  **Como funciona:**
56
- - Tanto o diretório do projeto quanto o do usuário são escaneados (união — não prevalece o primeiro escopo encontrado)
57
- - Os arquivos são carregados em ordem alfabética dentro de cada diretório. Use prefixos `01-`, `02-` para controlar a ordem
58
- - Apenas arquivos que correspondem a `*policies.{js,mjs,ts}` são carregados; outros arquivos são ignorados
56
+ - Os diretórios de projeto e usuário são verificados (união — sem prioridade por escopo)
57
+ - Os arquivos são carregados em ordem alfabética dentro de cada diretório. Use o prefixo `01-`, `02-` para controlar a ordem
58
+ - Somente arquivos que correspondem a `*policies.{js,mjs,ts}` são carregados; outros arquivos são ignorados
59
59
  - Cada arquivo é carregado de forma independente (fail-open por arquivo)
60
- - Funciona junto com `--custom` explícito e políticas embutidas
60
+ - Funciona em conjunto com `--custom` explícito e políticas integradas
61
61
 
62
62
  <Tip>
63
- As políticas por convenção são a forma mais fácil de compartilhar políticas com um time. Faça commit de `.failproofai/policies/` no git e todos os membros do time as recebem automaticamente.
63
+ As políticas por convenção são a forma mais fácil de compartilhar políticas em uma equipe. Versione `.failproofai/policies/` no git e todos os membros da equipe receberão as políticas automaticamente.
64
64
  </Tip>
65
65
 
66
66
  ### Opção 2: Caminho de arquivo explícito
67
67
 
68
68
  ```bash
69
- # Instalar com um arquivo de políticas personalizado
69
+ # Instalar com um arquivo de políticas personalizadas
70
70
  failproofai policies --install --custom ./my-policies.js
71
71
 
72
72
  # Substituir o caminho do arquivo de políticas
@@ -78,13 +78,13 @@ failproofai policies --uninstall --custom
78
78
 
79
79
  O caminho absoluto resolvido é armazenado em `policies-config.json` como `customPoliciesPath`. O arquivo é carregado novamente a cada evento de hook — não há cache entre eventos.
80
80
 
81
- ### Usando as duas opções juntas
81
+ ### Usando ambas juntas
82
82
 
83
83
  As políticas por convenção e o arquivo `--custom` explícito podem coexistir. Ordem de carregamento:
84
84
 
85
85
  1. Arquivo `customPoliciesPath` explícito (se configurado)
86
- 2. Arquivos de convenção do projeto (`{cwd}/.failproofai/policies/`, ordem alfabética)
87
- 3. Arquivos de convenção do usuário (`~/.failproofai/policies/`, ordem alfabética)
86
+ 2. Arquivos de convenção do projeto (`{cwd}/.failproofai/policies/`, em ordem alfabética)
87
+ 3. Arquivos de convenção do usuário (`~/.failproofai/policies/`, em ordem alfabética)
88
88
 
89
89
  ---
90
90
 
@@ -104,39 +104,38 @@ Registra uma política. Chame quantas vezes forem necessárias para múltiplas p
104
104
  customPolicies.add({
105
105
  name: string; // obrigatório - identificador único
106
106
  description?: string; // exibido na saída de `failproofai policies`
107
- match?: { events?: HookEventType[] }; // filtra por tipo de evento; omita para corresponder a todos
107
+ match?: { events?: HookEventType[] }; // filtra por tipo de evento; omitir para corresponder a todos
108
108
  fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
109
109
  });
110
110
  ```
111
111
 
112
- ### Helpers de decisão
112
+ ### Funções auxiliares de decisão
113
113
 
114
- | Função | Efeito | Use quando |
115
- |--------|--------|------------|
116
- | `allow()` | Permite a operação silenciosamente | A ação é segura, nenhuma mensagem é necessária |
114
+ | Função | Efeito | Quando usar |
115
+ |----------|--------|----------|
116
+ | `allow()` | Permite a operação silenciosamente | A ação é segura, sem mensagem necessária |
117
117
  | `deny(message)` | Bloqueia a operação | O agente não deve executar esta ação |
118
118
  | `instruct(message)` | Adiciona contexto sem bloquear | Fornece contexto adicional ao agente para mantê-lo no caminho certo |
119
119
 
120
- `deny(message)` — a mensagem aparece para Claude com o prefixo `"Blocked by failproofai:"`. Um único `deny` interrompe toda avaliação posterior.
120
+ `deny(message)` — a mensagem aparece para Claude com o prefixo `"Blocked by failproofai:"`. Um único `deny` interrompe toda avaliação subsequente.
121
121
 
122
- `instruct(message)` — a mensagem é anexada ao contexto de Claude para a chamada de ferramenta atual. Todas as mensagens `instruct` são acumuladas e entregues juntas.
122
+ `instruct(message)` — a mensagem é anexada ao contexto do Claude para a chamada de ferramenta atual. Todas as mensagens `instruct` são acumuladas e entregues juntas.
123
123
 
124
124
  <Tip>
125
- Você pode adicionar orientações extras a qualquer mensagem `deny` ou `instruct` incluindo um campo `hint` em `policyParams` — sem necessidade de alteração de código. Isso funciona para políticas personalizadas (`custom/`), de convenção do projeto (`.failproofai-project/`) e de convenção do usuário (`.failproofai-user/`) também. Veja [Configuração → hint](/pt-br/configuration#hint-cross-cutting) para detalhes.
125
+ Você pode adicionar orientações extras a qualquer mensagem `deny` ou `instruct` incluindo um campo `hint` em `policyParams` — sem necessidade de alteração no código. Isso também funciona para políticas personalizadas (`custom/`), de convenção de projeto (`.failproofai-project/`) e de convenção de usuário (`.failproofai-user/`). Consulte [Configuração → hint](/pt-br/configuration#hint-cross-cutting) para mais detalhes.
126
126
  </Tip>
127
127
 
128
128
  ### Mensagens informativas de allow
129
129
 
130
+ `allow(message)` permite a operação **e** envia uma mensagem informativa para Claude. A mensagem é entregue como `additionalContext` na resposta stdout do handler de hook — o mesmo mecanismo usado por `instruct`, mas semanticamente diferente: é uma atualização de status, não um aviso.
130
131
 
131
- `allow(message)` permite a operação **e** envia uma mensagem informativa de volta para Claude. A mensagem é entregue como `additionalContext` na resposta stdout do handler de hook — o mesmo mecanismo usado por `instruct`, mas semanticamente diferente: é uma atualização de status, não um aviso.
132
-
133
- | Função | Efeito | Use quando |
134
- |--------|--------|------------|
135
- | `allow(message)` | Permite e envia contexto para Claude | Confirmar que uma verificação passou, ou explicar por que foi ignorada |
132
+ | Função | Efeito | Quando usar |
133
+ |----------|--------|----------|
134
+ | `allow(message)` | Permite e envia contexto para Claude | Confirma que uma verificação passou ou explica por que foi ignorada |
136
135
 
137
136
  Casos de uso:
138
- - **Confirmações de status:** `allow("All CI checks passed.")` — informa Claude que tudo está ok
139
- - **Explicações de fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — informa Claude por que uma verificação foi ignorada, para que tenha contexto completo
137
+ - **Confirmações de status:** `allow("All CI checks passed.")` — informa ao Claude que tudo está ok
138
+ - **Explicações de fail-open:** `allow("GitHub CLI not installed, skipping CI check.")` — informa ao Claude por que uma verificação foi ignorada para que ele tenha contexto completo
140
139
  - **Múltiplas mensagens se acumulam:** se várias políticas retornarem `allow(message)`, todas as mensagens são unidas com quebras de linha e entregues juntas
141
140
 
142
141
  ```js
@@ -147,7 +146,7 @@ customPolicies.add({
147
146
  const cwd = ctx.session?.cwd;
148
147
  if (!cwd) return allow("No working directory, skipping branch check.");
149
148
 
150
- // ... check branch status ...
149
+ // ... verificar status do branch ...
151
150
  if (allPushed) {
152
151
  return allow("Branch is up to date with remote.");
153
152
  }
@@ -159,27 +158,27 @@ customPolicies.add({
159
158
  ### Campos de `PolicyContext`
160
159
 
161
160
  | Campo | Tipo | Descrição |
162
- |-------|------|-----------|
161
+ |-------|------|-------------|
163
162
  | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
164
- | `toolName` | `string \| undefined` | A ferramenta sendo chamada (ex.: `"Bash"`, `"Write"`, `"Read"`) |
163
+ | `toolName` | `string \| undefined` | A ferramenta sendo chamada (ex: `"Bash"`, `"Write"`, `"Read"`) |
165
164
  | `toolInput` | `Record<string, unknown> \| undefined` | Os parâmetros de entrada da ferramenta |
166
- | `payload` | `Record<string, unknown>` | Payload bruto completo do evento do Claude Code |
165
+ | `payload` | `Record<string, unknown>` | Payload completo do evento bruto do Claude Code |
167
166
  | `session` | `SessionMetadata \| undefined` | Contexto da sessão (veja abaixo) |
168
167
 
169
168
  ### Campos de `SessionMetadata`
170
169
 
171
170
  | Campo | Tipo | Descrição |
172
- |-------|------|-----------|
173
- | `sessionId` | `string` | Identificador da sessão do Claude Code |
171
+ |-------|------|-------------|
172
+ | `sessionId` | `string` | Identificador de sessão do Claude Code |
174
173
  | `cwd` | `string` | Diretório de trabalho da sessão do Claude Code |
175
174
  | `transcriptPath` | `string` | Caminho para o arquivo de transcrição JSONL da sessão |
176
175
 
177
176
  ### Tipos de evento
178
177
 
179
178
  | Evento | Quando dispara | Conteúdo de `toolInput` |
180
- |--------|---------------|------------------------|
181
- | `PreToolUse` | Antes de Claude executar uma ferramenta | A entrada da ferramenta (ex.: `{ command: "..." }` para Bash) |
182
- | `PostToolUse` | Após a conclusão de uma ferramenta | A entrada da ferramenta + `tool_result` (a saída) |
179
+ |-------|--------------|----------------------|
180
+ | `PreToolUse` | Antes de Claude executar uma ferramenta | A entrada da ferramenta (ex: `{ command: "..." }` para Bash) |
181
+ | `PostToolUse` | Após uma ferramenta ser concluída | A entrada da ferramenta + `tool_result` (a saída) |
183
182
  | `Notification` | Quando Claude envia uma notificação | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` - hooks devem sempre retornar `allow()`, não podem bloquear notificações |
184
183
  | `Stop` | Quando a sessão Claude encerra | Vazio |
185
184
 
@@ -189,10 +188,10 @@ customPolicies.add({
189
188
 
190
189
  As políticas são avaliadas nesta ordem:
191
190
 
192
- 1. Políticas embutidas (na ordem de definição)
193
- 2. Políticas personalizadas explícitas do `customPoliciesPath` (na ordem de `.add()`)
194
- 3. Políticas de convenção do projeto `.failproofai/policies/` (arquivos em ordem alfabética, ordem de `.add()` dentro de cada arquivo)
195
- 4. Políticas de convenção do usuário `~/.failproofai/policies/` (arquivos em ordem alfabética, ordem de `.add()` dentro de cada arquivo)
191
+ 1. Políticas integradas (na ordem de definição)
192
+ 2. Políticas personalizadas explícitas de `customPoliciesPath` (na ordem de `.add()`)
193
+ 3. Políticas de convenção do projeto em `.failproofai/policies/` (arquivos em ordem alfabética, ordem de `.add()` dentro de cada arquivo)
194
+ 4. Políticas de convenção do usuário em `~/.failproofai/policies/` (arquivos em ordem alfabética, ordem de `.add()` dentro de cada arquivo)
196
195
 
197
196
  <Note>
198
197
  O primeiro `deny` interrompe todas as políticas subsequentes. Todas as mensagens `instruct` são acumuladas e entregues juntas.
@@ -219,7 +218,7 @@ customPolicies.add({
219
218
  });
220
219
  ```
221
220
 
222
- Todas as importações relativas acessíveis a partir do arquivo de entrada são resolvidas. Isso é implementado reescrevendo as importações de `from "failproofai"` para o caminho real do dist e criando arquivos `.mjs` temporários para garantir compatibilidade com ESM.
221
+ Todas as importações relativas acessíveis a partir do arquivo de entrada são resolvidas. Isso é implementado reescrevendo as importações `from "failproofai"` para o caminho real em dist e criando arquivos `.mjs` temporários para garantir compatibilidade com ESM.
223
222
 
224
223
  ---
225
224
 
@@ -232,7 +231,7 @@ customPolicies.add({
232
231
  name: "require-summary-on-stop",
233
232
  match: { events: ["Stop"] },
234
233
  fn: async (ctx) => {
235
- // Dispara apenas quando a sessão encerra
234
+ // dispara quando a sessão encerra
236
235
  // ctx.session.transcriptPath contém o log completo da sessão
237
236
  return allow();
238
237
  },
@@ -245,20 +244,20 @@ Omita `match` completamente para disparar em todos os tipos de evento.
245
244
 
246
245
  ## Tratamento de erros e modos de falha
247
246
 
248
- As políticas personalizadas são **fail-open**: erros nunca bloqueiam as políticas embutidas nem causam crash no handler de hook.
247
+ Políticas personalizadas são **fail-open**: erros nunca bloqueiam políticas integradas nem derrubam o handler de hook.
249
248
 
250
249
  | Falha | Comportamento |
251
- |-------|---------------|
252
- | `customPoliciesPath` não definido | Nenhuma política personalizada explícita é executada; políticas de convenção e embutidas continuam normalmente |
253
- | Arquivo não encontrado | Aviso registrado em `~/.failproofai/hook.log`; políticas embutidas continuam |
254
- | Erro de sintaxe/importação (explícito) | Erro registrado em `~/.failproofai/hook.log`; políticas personalizadas explícitas são ignoradas |
255
- | Erro de sintaxe/importação (convenção) | Erro registrado; aquele arquivo é ignorado, outros arquivos de convenção ainda são carregados |
256
- | `fn` lança erro em tempo de execução | Erro registrado; aquele hook é tratado como `allow`; outros hooks continuam |
250
+ |---------|----------|
251
+ | `customPoliciesPath` não configurado | Nenhuma política personalizada explícita é executada; políticas por convenção e integradas continuam normalmente |
252
+ | Arquivo não encontrado | Aviso registrado em `~/.failproofai/hook.log`; integradas continuam |
253
+ | Erro de sintaxe/importação (explícito) | Erro registrado em `~/.failproofai/hook.log`; políticas personalizadas explícitas ignoradas |
254
+ | Erro de sintaxe/importação (convenção) | Erro registrado; aquele arquivo é ignorado, outros arquivos de convenção continuam carregando |
255
+ | `fn` lança exceção em tempo de execução | Erro registrado; aquele hook é tratado como `allow`; outros hooks continuam |
257
256
  | `fn` demora mais de 10s | Timeout registrado; tratado como `allow` |
258
257
  | Diretório de convenção ausente | Nenhuma política de convenção é executada; sem erro |
259
258
 
260
259
  <Tip>
261
- Para depurar erros de políticas personalizadas, monitore o arquivo de log:
260
+ Para depurar erros em políticas personalizadas, acompanhe o arquivo de log:
262
261
 
263
262
  ```bash
264
263
  tail -f ~/.failproofai/hook.log
@@ -286,7 +285,7 @@ customPolicies.add({
286
285
  },
287
286
  });
288
287
 
289
- // Mantém o agente no caminho certo: verifica testes antes de commitar
288
+ // Mantém o agente no caminho certo: verificar testes antes de fazer commit
290
289
  customPolicies.add({
291
290
  name: "remind-test-before-commit",
292
291
  description: "Keep the agent on track: verify tests pass before committing",
@@ -301,7 +300,7 @@ customPolicies.add({
301
300
  },
302
301
  });
303
302
 
304
- // Previne alterações de dependências não planejadas durante o período de congelamento
303
+ // Evita mudanças de dependências não planejadas durante o período de freeze
305
304
  customPolicies.add({
306
305
  name: "dependency-freeze",
307
306
  description: "Prevent unplanned dependency changes during freeze period",
@@ -327,11 +326,11 @@ export { customPolicies };
327
326
  O diretório `examples/` contém arquivos de políticas prontos para uso:
328
327
 
329
328
  | Arquivo | Conteúdo |
330
- |---------|----------|
331
- | `examples/policies-basic.js` | Cinco políticas iniciais cobrindo modos de falha comuns de agentes |
332
- | `examples/policies-advanced/index.js` | Padrões avançados: importações transitivas, chamadas assíncronas, limpeza de saída e hooks de fim de sessão |
333
- | `examples/convention-policies/security-policies.mjs` | Políticas de segurança baseadas em convenção (bloquear escritas em .env, impedir reescrita do histórico git) |
334
- | `examples/convention-policies/workflow-policies.mjs` | Políticas de fluxo de trabalho baseadas em convenção (lembretes de testes, auditoria de escritas em arquivos) |
329
+ |------|----------|
330
+ | `examples/policies-basic.js` | Cinco políticas iniciais cobrindo modos comuns de falha de agentes |
331
+ | `examples/policies-advanced/index.js` | Padrões avançados: importações transitivas, chamadas assíncronas, sanitização de saída e hooks de fim de sessão |
332
+ | `examples/convention-policies/security-policies.mjs` | Políticas de segurança baseadas em convenção (bloquear escritas em .env, evitar reescrita de histórico git) |
333
+ | `examples/convention-policies/workflow-policies.mjs` | Políticas de fluxo de trabalho baseadas em convenção (lembretes de teste, auditoria de escritas em arquivos) |
335
334
 
336
335
  ### Usando exemplos com arquivo explícito
337
336
 
@@ -342,11 +341,11 @@ failproofai policies --install --custom ./examples/policies-basic.js
342
341
  ### Usando exemplos baseados em convenção
343
342
 
344
343
  ```bash
345
- # Copiar para o nível do projeto
344
+ # Copiar para o nível de projeto
346
345
  mkdir -p .failproofai/policies
347
346
  cp examples/convention-policies/*.mjs .failproofai/policies/
348
347
 
349
- # Ou copiar para o nível do usuário
348
+ # Ou copiar para o nível de usuário
350
349
  mkdir -p ~/.failproofai/policies
351
350
  cp examples/convention-policies/*.mjs ~/.failproofai/policies/
352
351
  ```