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.
- package/.next/standalone/.failproofai/policies/workflow-policies.mjs +2 -1
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0r6vvp5._.js → [root-of-the-server]__0.~fd7s._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0z5dd-f._.js → [root-of-the-server]__0a.nuas._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
- package/.next/standalone/.next/static/chunks/{0j_ivegn3i5wt.js → 0.z51twd.0l5z.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04fpsjft~cje..js → 0hctoh28rg838.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0.io32u7gjgsb.js → 0hplx-8c-4vpv.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0yf_mmdukq6up.js → 0maq.q1t.ri85.js} +2 -2
- package/.next/standalone/.next/static/chunks/{0x8vagatq36_7.js → 0teq8wdh3po1n.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04mtv9jnqknn3.js → 0uc0um_uz51m_.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0h4qcn40dunn7.js → 0ul6fk-z.6k-0.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0kvldut6ndzyz.js → 0w9lwqy0-v1dk.js} +1 -1
- package/.next/standalone/CHANGELOG.md +9 -1
- package/.next/standalone/README.md +2 -2
- package/.next/standalone/dist/cli.mjs +19 -2
- package/.next/standalone/docs/ar/architecture.mdx +66 -65
- package/.next/standalone/docs/ar/configuration.mdx +42 -42
- package/.next/standalone/docs/ar/custom-policies.mdx +63 -68
- package/.next/standalone/docs/architecture.mdx +2 -2
- package/.next/standalone/docs/configuration.mdx +1 -1
- package/.next/standalone/docs/custom-policies.mdx +2 -6
- package/.next/standalone/docs/de/architecture.mdx +92 -92
- package/.next/standalone/docs/de/configuration.mdx +35 -35
- package/.next/standalone/docs/de/custom-policies.mdx +50 -54
- package/.next/standalone/docs/es/architecture.mdx +73 -73
- package/.next/standalone/docs/es/configuration.mdx +25 -25
- package/.next/standalone/docs/es/custom-policies.mdx +49 -53
- package/.next/standalone/docs/fr/architecture.mdx +55 -55
- package/.next/standalone/docs/fr/configuration.mdx +26 -26
- package/.next/standalone/docs/fr/custom-policies.mdx +42 -46
- package/.next/standalone/docs/he/architecture.mdx +67 -67
- package/.next/standalone/docs/he/configuration.mdx +53 -52
- package/.next/standalone/docs/he/custom-policies.mdx +73 -77
- package/.next/standalone/docs/hi/architecture.mdx +107 -107
- package/.next/standalone/docs/hi/configuration.mdx +39 -39
- package/.next/standalone/docs/hi/custom-policies.mdx +77 -81
- package/.next/standalone/docs/i18n/README.ar.md +66 -66
- package/.next/standalone/docs/i18n/README.de.md +40 -40
- package/.next/standalone/docs/i18n/README.es.md +40 -40
- package/.next/standalone/docs/i18n/README.fr.md +44 -44
- package/.next/standalone/docs/i18n/README.he.md +67 -67
- package/.next/standalone/docs/i18n/README.hi.md +71 -71
- package/.next/standalone/docs/i18n/README.it.md +63 -63
- package/.next/standalone/docs/i18n/README.ja.md +55 -55
- package/.next/standalone/docs/i18n/README.ko.md +59 -59
- package/.next/standalone/docs/i18n/README.pt-br.md +45 -45
- package/.next/standalone/docs/i18n/README.ru.md +71 -71
- package/.next/standalone/docs/i18n/README.tr.md +76 -76
- package/.next/standalone/docs/i18n/README.vi.md +71 -71
- package/.next/standalone/docs/i18n/README.zh.md +53 -53
- package/.next/standalone/docs/it/architecture.mdx +55 -54
- package/.next/standalone/docs/it/configuration.mdx +45 -46
- package/.next/standalone/docs/it/custom-policies.mdx +77 -82
- package/.next/standalone/docs/ja/architecture.mdx +93 -93
- package/.next/standalone/docs/ja/configuration.mdx +48 -48
- package/.next/standalone/docs/ja/custom-policies.mdx +63 -67
- package/.next/standalone/docs/ko/architecture.mdx +66 -66
- package/.next/standalone/docs/ko/configuration.mdx +36 -36
- package/.next/standalone/docs/ko/custom-policies.mdx +73 -77
- package/.next/standalone/docs/pt-br/architecture.mdx +55 -55
- package/.next/standalone/docs/pt-br/configuration.mdx +36 -36
- package/.next/standalone/docs/pt-br/custom-policies.mdx +62 -66
- package/.next/standalone/docs/ru/architecture.mdx +59 -60
- package/.next/standalone/docs/ru/configuration.mdx +52 -53
- package/.next/standalone/docs/ru/custom-policies.mdx +70 -74
- package/.next/standalone/docs/tr/architecture.mdx +124 -124
- package/.next/standalone/docs/tr/configuration.mdx +46 -47
- package/.next/standalone/docs/tr/custom-policies.mdx +75 -78
- package/.next/standalone/docs/vi/architecture.mdx +65 -64
- package/.next/standalone/docs/vi/configuration.mdx +42 -42
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -72
- package/.next/standalone/docs/zh/architecture.mdx +67 -67
- package/.next/standalone/docs/zh/configuration.mdx +35 -35
- package/.next/standalone/docs/zh/custom-policies.mdx +54 -58
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/hooks/builtin-policies.ts +30 -0
- package/README.md +2 -2
- package/dist/cli.mjs +19 -2
- package/package.json +1 -1
- package/src/hooks/builtin-policies.ts +30 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{ICeMHZ-8ZR7HY5GLm7oSJ → 8mygPGI5bzrtWK36ZYO59}/_ssgManifest.js +0 -0
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
|
|
24
24
|
**Переводы**: [简体中文](docs/i18n/README.zh.md) | [日本語](docs/i18n/README.ja.md) | [한국어](docs/i18n/README.ko.md) | [Español](docs/i18n/README.es.md) | [Português](docs/i18n/README.pt-br.md) | [Deutsch](docs/i18n/README.de.md) | [Français](docs/i18n/README.fr.md) | [Русский](docs/i18n/README.ru.md) | [हिन्दी](docs/i18n/README.hi.md) | [Türkçe](docs/i18n/README.tr.md) | [Tiếng Việt](docs/i18n/README.vi.md) | [Italiano](docs/i18n/README.it.md) | [العربية](docs/i18n/README.ar.md) | [עברית](docs/i18n/README.he.md)
|
|
25
25
|
|
|
26
|
-
Самый простой способ управлять политиками, которые делают ваших AI-агентов
|
|
26
|
+
Самый простой способ управлять политиками, которые делают ваших AI-агентов надёжными, сосредоточенными и автономными — для **Claude Code** и **Agents SDK**.
|
|
27
27
|
|
|
28
|
-
- **30 встроенных политик**
|
|
29
|
-
- **Пользовательские политики**
|
|
30
|
-
- **Простая конфигурация**
|
|
31
|
-
-
|
|
28
|
+
- **30 встроенных политик** — Предотвращайте типичные сбои агентов из коробки. Блокируйте деструктивные команды, предотвращайте утечки секретов, удерживайте агентов в границах проекта, обнаруживайте циклы и многое другое.
|
|
29
|
+
- **Пользовательские политики** — Напишите свои правила надёжности на JavaScript. Используйте API `allow`/`deny`/`instruct` для обеспечения конвенций, предотвращения дрейфа, контроля операций или интеграции с внешними системами.
|
|
30
|
+
- **Простая конфигурация** — Настраивайте любую политику без написания кода. Устанавливайте списки разрешений, защищённые ветви, пороги на уровне проекта или глобально. Конфигурация трёх уровней автоматически объединяется.
|
|
31
|
+
- **Мониторинг агентов** — Смотрите, что делали ваши агенты, пока вас не было. Просматривайте сеансы, проверяйте каждый вызов инструмента и смотрите точно, где срабатывали политики.
|
|
32
32
|
|
|
33
33
|
Всё работает локально — никакие данные не покидают вашу машину.
|
|
34
34
|
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
## Требования
|
|
38
38
|
|
|
39
39
|
- Node.js >= 20.9.0
|
|
40
|
-
- Bun >= 1.3.0 (
|
|
40
|
+
- Bun >= 1.3.0 (опционально — требуется только для разработки / сборки из исходников)
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -59,7 +59,7 @@ bun add -g failproofai
|
|
|
59
59
|
failproofai policies --install
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Записывает записи hook в `~/.claude/settings.json`. Claude Code теперь будет вызывать failproofai до и после каждого вызова инструмента.
|
|
63
63
|
|
|
64
64
|
### 2. Запустите панель управления
|
|
65
65
|
|
|
@@ -79,15 +79,15 @@ failproofai policies
|
|
|
79
79
|
|
|
80
80
|
## Установка политик
|
|
81
81
|
|
|
82
|
-
###
|
|
82
|
+
### Области видимости
|
|
83
83
|
|
|
84
|
-
|
|
|
85
|
-
|
|
86
|
-
|
|
|
84
|
+
| Область | Команда | Где записывается |
|
|
85
|
+
|---------|---------|------------------|
|
|
86
|
+
| Глобальная (по умолчанию) | `failproofai policies --install` | `~/.claude/settings.json` |
|
|
87
87
|
| Проект | `failproofai policies --install --scope project` | `.claude/settings.json` |
|
|
88
|
-
|
|
|
88
|
+
| Локальная | `failproofai policies --install --scope local` | `.claude/settings.local.json` |
|
|
89
89
|
|
|
90
|
-
###
|
|
90
|
+
### Установка специфических политик
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
93
|
failproofai policies --install block-sudo block-rm-rf sanitize-api-keys
|
|
@@ -97,7 +97,7 @@ failproofai policies --install block-sudo block-rm-rf sanitize-api-keys
|
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
99
|
failproofai policies --uninstall
|
|
100
|
-
# или для
|
|
100
|
+
# или для конкретной области:
|
|
101
101
|
failproofai policies --uninstall --scope project
|
|
102
102
|
```
|
|
103
103
|
|
|
@@ -105,7 +105,7 @@ failproofai policies --uninstall --scope project
|
|
|
105
105
|
|
|
106
106
|
## Конфигурация
|
|
107
107
|
|
|
108
|
-
Конфигурация политик находится в `~/.failproofai/policies-config.json` (
|
|
108
|
+
Конфигурация политик находится в `~/.failproofai/policies-config.json` (глобальная) или `.failproofai/policies-config.json` в вашем проекте (для каждого проекта).
|
|
109
109
|
|
|
110
110
|
```json
|
|
111
111
|
{
|
|
@@ -120,11 +120,11 @@ failproofai policies --uninstall --scope project
|
|
|
120
120
|
"policyParams": {
|
|
121
121
|
"block-sudo": {
|
|
122
122
|
"allowPatterns": ["sudo systemctl status", "sudo journalctl"],
|
|
123
|
-
"hint": "
|
|
123
|
+
"hint": "Используйте apt-get напрямую без sudo."
|
|
124
124
|
},
|
|
125
125
|
"block-push-master": {
|
|
126
126
|
"protectedBranches": ["main", "release", "prod"],
|
|
127
|
-
"hint": "
|
|
127
|
+
"hint": "Попробуйте создать свежую ветвь вместо этого."
|
|
128
128
|
},
|
|
129
129
|
"sanitize-api-keys": {
|
|
130
130
|
"additionalPatterns": [
|
|
@@ -138,60 +138,60 @@ failproofai policies --uninstall --scope project
|
|
|
138
138
|
}
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
**Три
|
|
141
|
+
**Три области конфигурации** автоматически объединяются (проект → локальная → глобальная). Смотрите [docs/configuration.mdx](docs/configuration.mdx) для полных правил объединения.
|
|
142
142
|
|
|
143
143
|
---
|
|
144
144
|
|
|
145
145
|
## Встроенные политики
|
|
146
146
|
|
|
147
|
-
| Политика | Описание |
|
|
147
|
+
| Политика | Описание | Настраивается |
|
|
148
148
|
|----------|---------|:---:|
|
|
149
|
-
| `block-sudo` |
|
|
150
|
-
| `block-rm-rf` |
|
|
151
|
-
| `block-curl-pipe-sh` |
|
|
152
|
-
| `block-failproofai-commands` |
|
|
153
|
-
| `sanitize-jwt` |
|
|
154
|
-
| `sanitize-api-keys` |
|
|
155
|
-
| `sanitize-connection-strings` |
|
|
156
|
-
| `sanitize-private-key-content` |
|
|
157
|
-
| `sanitize-bearer-tokens` |
|
|
158
|
-
| `block-env-files` |
|
|
159
|
-
| `protect-env-vars` |
|
|
160
|
-
| `block-read-outside-cwd` |
|
|
161
|
-
| `block-secrets-write` |
|
|
162
|
-
| `block-push-master` |
|
|
163
|
-
| `block-work-on-main` |
|
|
164
|
-
| `block-force-push` |
|
|
165
|
-
| `warn-git-amend` |
|
|
166
|
-
| `warn-git-stash-drop` |
|
|
167
|
-
| `warn-all-files-staged` |
|
|
168
|
-
| `warn-destructive-sql` |
|
|
169
|
-
| `warn-schema-alteration` |
|
|
170
|
-
| `warn-large-file-write` |
|
|
171
|
-
| `warn-package-publish` |
|
|
172
|
-
| `warn-background-process` |
|
|
173
|
-
| `warn-global-package-install` |
|
|
174
|
-
| …и
|
|
175
|
-
|
|
176
|
-
|
|
149
|
+
| `block-sudo` | Предотвратить запуск привилегированных системных команд | `allowPatterns` |
|
|
150
|
+
| `block-rm-rf` | Предотвратить случайное рекурсивное удаление файлов | `allowPaths` |
|
|
151
|
+
| `block-curl-pipe-sh` | Предотвратить передачу ненадёжных скриптов в shell | |
|
|
152
|
+
| `block-failproofai-commands` | Предотвратить самостоятельное удаление | |
|
|
153
|
+
| `sanitize-jwt` | Остановить утечку JWT токенов в контекст агента | |
|
|
154
|
+
| `sanitize-api-keys` | Остановить утечку ключей API в контекст агента | `additionalPatterns` |
|
|
155
|
+
| `sanitize-connection-strings` | Остановить утечку учётных данных базы данных в контекст агента | |
|
|
156
|
+
| `sanitize-private-key-content` | Скрыть блоки PEM приватных ключей из вывода | |
|
|
157
|
+
| `sanitize-bearer-tokens` | Скрыть токены Authorization Bearer из вывода | |
|
|
158
|
+
| `block-env-files` | Удерживать агентов от чтения .env файлов | |
|
|
159
|
+
| `protect-env-vars` | Предотвратить вывод переменных окружения | |
|
|
160
|
+
| `block-read-outside-cwd` | Удерживать агентов в границах проекта | `allowPaths` |
|
|
161
|
+
| `block-secrets-write` | Предотвратить запись в файлы приватных ключей и сертификатов | `additionalPatterns` |
|
|
162
|
+
| `block-push-master` | Предотвратить случайные push в main/master | `protectedBranches` |
|
|
163
|
+
| `block-work-on-main` | Удерживать агентов от защищённых ветвей | `protectedBranches` |
|
|
164
|
+
| `block-force-push` | Предотвратить `git push --force` | |
|
|
165
|
+
| `warn-git-amend` | Напомнить агентам перед изменением коммитов | |
|
|
166
|
+
| `warn-git-stash-drop` | Напомнить агентам перед удалением стеша | |
|
|
167
|
+
| `warn-all-files-staged` | Поймать случайный `git add -A` | |
|
|
168
|
+
| `warn-destructive-sql` | Поймать DROP/DELETE SQL перед выполнением | |
|
|
169
|
+
| `warn-schema-alteration` | Поймать ALTER TABLE перед выполнением | |
|
|
170
|
+
| `warn-large-file-write` | Поймать неожиданно большие записи файлов | `thresholdKb` |
|
|
171
|
+
| `warn-package-publish` | Поймать случайный `npm publish` | |
|
|
172
|
+
| `warn-background-process` | Поймать непреднамеренные запуски фоновых процессов | |
|
|
173
|
+
| `warn-global-package-install` | Поймать непреднамеренные глобальные установки пакетов | |
|
|
174
|
+
| …и другие | | |
|
|
175
|
+
|
|
176
|
+
Полные детали политик и справочник параметров: [docs/built-in-policies.mdx](docs/built-in-policies.mdx)
|
|
177
177
|
|
|
178
178
|
---
|
|
179
179
|
|
|
180
180
|
## Пользовательские политики
|
|
181
181
|
|
|
182
|
-
Напишите
|
|
182
|
+
Напишите свои политики, чтобы сделать агентов надёжными и сосредоточенными на задаче:
|
|
183
183
|
|
|
184
184
|
```js
|
|
185
185
|
import { customPolicies, allow, deny, instruct } from "failproofai";
|
|
186
186
|
|
|
187
187
|
customPolicies.add({
|
|
188
188
|
name: "no-production-writes",
|
|
189
|
-
description: "
|
|
189
|
+
description: "Заблокировать запись в пути, содержащие 'production'",
|
|
190
190
|
match: { events: ["PreToolUse"] },
|
|
191
191
|
fn: async (ctx) => {
|
|
192
192
|
if (!["Write", "Edit"].includes(ctx.toolName ?? "")) return allow();
|
|
193
193
|
const path = ctx.toolInput?.file_path ?? "";
|
|
194
|
-
if (path.includes("production")) return deny("
|
|
194
|
+
if (path.includes("production")) return deny("Запись в пути production заблокирована");
|
|
195
195
|
return allow();
|
|
196
196
|
},
|
|
197
197
|
});
|
|
@@ -203,12 +203,12 @@ customPolicies.add({
|
|
|
203
203
|
failproofai policies --install --custom ./my-policies.js
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
-
### Вспомогательные функции
|
|
206
|
+
### Вспомогательные функции решений
|
|
207
207
|
|
|
208
208
|
| Функция | Эффект |
|
|
209
209
|
|---------|--------|
|
|
210
210
|
| `allow()` | Разрешить операцию |
|
|
211
|
-
| `allow(message)` | Разрешить и отправить информационный контекст Claude
|
|
211
|
+
| `allow(message)` | Разрешить и отправить информационный контекст Claude |
|
|
212
212
|
| `deny(message)` | Заблокировать операцию; сообщение показано Claude |
|
|
213
213
|
| `instruct(message)` | Добавить контекст в подсказку Claude; не блокирует |
|
|
214
214
|
|
|
@@ -219,27 +219,27 @@ failproofai policies --install --custom ./my-policies.js
|
|
|
219
219
|
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
220
220
|
| `toolName` | `string` | Вызываемый инструмент (`"Bash"`, `"Write"`, `"Read"`, …) |
|
|
221
221
|
| `toolInput` | `object` | Входные параметры инструмента |
|
|
222
|
-
| `payload` | `object` | Полный
|
|
222
|
+
| `payload` | `object` | Полный сырой payload события |
|
|
223
223
|
| `session.cwd` | `string` | Рабочая директория сеанса Claude Code |
|
|
224
224
|
| `session.sessionId` | `string` | Идентификатор сеанса |
|
|
225
|
-
| `session.transcriptPath` | `string` | Путь к файлу
|
|
225
|
+
| `session.transcriptPath` | `string` | Путь к файлу транскрипта сеанса |
|
|
226
226
|
|
|
227
|
-
Пользовательские
|
|
227
|
+
Пользовательские hooks поддерживают переходные локальные импорты, async/await и доступ к `process.env`. Ошибки являются fail-open (логируются в `~/.failproofai/hook.log`, встроенные политики продолжают работу). Смотрите [docs/custom-hooks.mdx](docs/custom-hooks.mdx) для полного руководства.
|
|
228
228
|
|
|
229
|
-
### Политики на основе соглашений
|
|
229
|
+
### Политики на основе соглашений
|
|
230
230
|
|
|
231
|
-
Поместите файлы `*policies.{js,mjs,ts}` в `.failproofai/policies/`
|
|
231
|
+
Поместите файлы `*policies.{js,mjs,ts}` в `.failproofai/policies/` и они автоматически загружаются — без флага `--custom` или изменений конфигурации. Работает как git hooks: положите файл, и он просто работает.
|
|
232
232
|
|
|
233
233
|
```text
|
|
234
|
-
# Уровень проекта —
|
|
234
|
+
# Уровень проекта — зафиксировано в git, общее с командой
|
|
235
235
|
.failproofai/policies/security-policies.mjs
|
|
236
236
|
.failproofai/policies/workflow-policies.mjs
|
|
237
237
|
|
|
238
|
-
# Уровень пользователя —
|
|
238
|
+
# Уровень пользователя — персональное, применяется ко всем проектам
|
|
239
239
|
~/.failproofai/policies/my-policies.mjs
|
|
240
240
|
```
|
|
241
241
|
|
|
242
|
-
|
|
242
|
+
Оба уровня загружаются (объединение). Файлы загружаются в алфавитном порядке в каждой директории. Используйте префиксы `01-`, `02-` и т.д. для контроля порядка. Смотрите [examples/convention-policies/](examples/convention-policies/) для готовых примеров.
|
|
243
243
|
|
|
244
244
|
---
|
|
245
245
|
|
|
@@ -258,13 +258,13 @@ FAILPROOFAI_TELEMETRY_DISABLED=1 failproofai
|
|
|
258
258
|
## Документация
|
|
259
259
|
|
|
260
260
|
| Руководство | Описание |
|
|
261
|
-
|
|
261
|
+
|-----------|----------|
|
|
262
262
|
| [Начало работы](docs/getting-started.mdx) | Установка и первые шаги |
|
|
263
263
|
| [Встроенные политики](docs/built-in-policies.mdx) | Все 30 встроенных политик с параметрами |
|
|
264
|
-
| [Пользовательские политики](docs/custom-policies.mdx) | Напишите
|
|
265
|
-
| [Конфигурация](docs/configuration.mdx) | Формат файла конфигурации и объединение
|
|
264
|
+
| [Пользовательские политики](docs/custom-policies.mdx) | Напишите свои политики |
|
|
265
|
+
| [Конфигурация](docs/configuration.mdx) | Формат файла конфигурации и объединение областей видимости |
|
|
266
266
|
| [Панель управления](docs/dashboard.mdx) | Мониторинг сеансов и проверка активности политик |
|
|
267
|
-
| [Архитектура](docs/architecture.mdx) | Как работает система
|
|
267
|
+
| [Архитектура](docs/architecture.mdx) | Как работает система hooks |
|
|
268
268
|
| [Тестирование](docs/testing.mdx) | Запуск тестов и написание новых |
|
|
269
269
|
|
|
270
270
|
### Запустите документацию локально
|
|
@@ -274,7 +274,7 @@ docker build -f Dockerfile.docs -t failproofai-docs .
|
|
|
274
274
|
docker run --rm -p 3000:3000 failproofai-docs
|
|
275
275
|
```
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
Открывает сайт документации Mintlify на `http://localhost:3000`. Контейнер следит за изменениями, если вы примонтируете директорию docs:
|
|
278
278
|
|
|
279
279
|
```bash
|
|
280
280
|
docker run --rm -p 3000:3000 -v $(pwd)/docs:/app/docs failproofai-docs
|
|
@@ -284,25 +284,25 @@ docker run --rm -p 3000:3000 -v $(pwd)/docs:/app/docs failproofai-docs
|
|
|
284
284
|
|
|
285
285
|
## Примечание для участников failproofai
|
|
286
286
|
|
|
287
|
-
`.claude/settings.json` этого репозитория использует `bun ./bin/failproofai.mjs --hook <EventType>` вместо стандартной команды `npx -y failproofai`. Это потому, что запуск `npx -y failproofai` внутри самого проекта failproofai
|
|
287
|
+
`.claude/settings.json` этого репозитория использует `bun ./bin/failproofai.mjs --hook <EventType>` вместо стандартной команды `npx -y failproofai`. Это потому, что запуск `npx -y failproofai` внутри самого проекта failproofai создаёт конфликт самоссылки.
|
|
288
288
|
|
|
289
|
-
Для всех
|
|
289
|
+
Для всех других репозиториев рекомендуемый подход — `npx -y failproofai`, установленный с помощью:
|
|
290
290
|
|
|
291
291
|
```bash
|
|
292
292
|
failproofai policies --install --scope project
|
|
293
293
|
```
|
|
294
294
|
|
|
295
|
-
##
|
|
295
|
+
## Помощь в разработке
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
Смотрите [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
301
301
|
## Лицензия
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
Смотрите [LICENSE](LICENSE).
|
|
304
304
|
|
|
305
305
|
---
|
|
306
306
|
|
|
307
|
-
Создано и поддерживается
|
|
307
|
+
Создано и поддерживается **ExosphereHost: Reliability Research Lab for Your Agents**. Мы помогаем предприятиям и стартапам улучшить надёжность своих AI-агентов благодаря собственным агентам, программному обеспечению и опыту. Узнайте больше на [exosphere.host](https://exosphere.host).
|
|
308
308
|
```
|