failproofai 0.0.6-beta.1 → 0.0.6-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.failproofai/policies/review-policies.mjs +4 -3
- 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]__0~kmh8w._.js → [root-of-the-server]__05akje6._.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]__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]__0rh.18_._.js → [root-of-the-server]__0i5kvry._.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/{08t08igdql9yt.js → 00j0rr7rh8ef8.js} +1 -1
- package/.next/standalone/.next/static/chunks/{12~yi9oj8av8p.js → 05j1px0r8yzh6.js} +2 -2
- package/.next/standalone/.next/static/chunks/{09_k80d~cq2wg.js → 0badv41uxa56..js} +1 -1
- package/.next/standalone/.next/static/chunks/{0wlyoif4_kj_t.js → 0ijk_kek9_wyx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0bvhsa6zva2o..js → 0ksdlt_1hucdm.js} +1 -1
- package/.next/standalone/.next/static/chunks/{03rz6ykw-a2xi.js → 0npb~873.wvg3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{01b~z8f1ws0rk.js → 0xpl.oscrakvx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0gbf4cphy8ksq.js → 1052sguyd-.ka.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0v.yd0kg_ld3r.js → 14cl9poem30dq.js} +1 -1
- package/.next/standalone/CHANGELOG.md +11 -0
- package/.next/standalone/dist/cli.mjs +3 -3
- package/.next/standalone/docs/ar/built-in-policies.mdx +124 -87
- package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
- package/.next/standalone/docs/ar/examples.mdx +86 -33
- package/.next/standalone/docs/ar/getting-started.mdx +82 -29
- package/.next/standalone/docs/built-in-policies.mdx +1 -1
- package/.next/standalone/docs/de/built-in-policies.mdx +93 -56
- package/.next/standalone/docs/de/custom-policies.mdx +56 -56
- package/.next/standalone/docs/de/examples.mdx +72 -18
- package/.next/standalone/docs/de/getting-started.mdx +72 -20
- package/.next/standalone/docs/es/built-in-policies.mdx +115 -78
- package/.next/standalone/docs/es/custom-policies.mdx +55 -55
- package/.next/standalone/docs/es/examples.mdx +73 -19
- package/.next/standalone/docs/es/getting-started.mdx +72 -20
- package/.next/standalone/docs/fr/built-in-policies.mdx +83 -46
- package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
- package/.next/standalone/docs/fr/examples.mdx +78 -24
- package/.next/standalone/docs/fr/getting-started.mdx +65 -13
- package/.next/standalone/docs/he/built-in-policies.mdx +156 -117
- package/.next/standalone/docs/he/custom-policies.mdx +75 -75
- package/.next/standalone/docs/he/examples.mdx +87 -33
- package/.next/standalone/docs/he/getting-started.mdx +84 -33
- package/.next/standalone/docs/hi/built-in-policies.mdx +101 -60
- package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
- package/.next/standalone/docs/hi/examples.mdx +90 -36
- package/.next/standalone/docs/hi/getting-started.mdx +80 -27
- package/.next/standalone/docs/i18n/README.ar.md +69 -69
- package/.next/standalone/docs/i18n/README.de.md +46 -46
- package/.next/standalone/docs/i18n/README.es.md +42 -42
- package/.next/standalone/docs/i18n/README.fr.md +39 -39
- package/.next/standalone/docs/i18n/README.he.md +83 -83
- package/.next/standalone/docs/i18n/README.hi.md +69 -69
- package/.next/standalone/docs/i18n/README.it.md +72 -72
- package/.next/standalone/docs/i18n/README.ja.md +71 -71
- package/.next/standalone/docs/i18n/README.ko.md +52 -52
- package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
- package/.next/standalone/docs/i18n/README.ru.md +66 -66
- package/.next/standalone/docs/i18n/README.tr.md +82 -83
- package/.next/standalone/docs/i18n/README.vi.md +70 -71
- package/.next/standalone/docs/i18n/README.zh.md +51 -51
- package/.next/standalone/docs/it/built-in-policies.mdx +118 -81
- package/.next/standalone/docs/it/custom-policies.mdx +69 -69
- package/.next/standalone/docs/it/examples.mdx +93 -39
- package/.next/standalone/docs/it/getting-started.mdx +73 -21
- package/.next/standalone/docs/ja/built-in-policies.mdx +98 -61
- package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
- package/.next/standalone/docs/ja/examples.mdx +76 -22
- package/.next/standalone/docs/ja/getting-started.mdx +65 -13
- package/.next/standalone/docs/ko/built-in-policies.mdx +137 -100
- package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
- package/.next/standalone/docs/ko/examples.mdx +87 -33
- package/.next/standalone/docs/ko/getting-started.mdx +61 -9
- package/.next/standalone/docs/pt-br/built-in-policies.mdx +94 -57
- package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
- package/.next/standalone/docs/pt-br/examples.mdx +78 -24
- package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
- package/.next/standalone/docs/ru/built-in-policies.mdx +142 -105
- package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
- package/.next/standalone/docs/ru/examples.mdx +77 -22
- package/.next/standalone/docs/ru/getting-started.mdx +74 -22
- package/.next/standalone/docs/tr/built-in-policies.mdx +104 -67
- package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
- package/.next/standalone/docs/tr/examples.mdx +97 -42
- package/.next/standalone/docs/tr/getting-started.mdx +75 -23
- package/.next/standalone/docs/vi/built-in-policies.mdx +110 -72
- package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
- package/.next/standalone/docs/vi/examples.mdx +93 -38
- package/.next/standalone/docs/vi/getting-started.mdx +74 -22
- package/.next/standalone/docs/zh/built-in-policies.mdx +132 -95
- package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
- package/.next/standalone/docs/zh/examples.mdx +90 -36
- package/.next/standalone/docs/zh/getting-started.mdx +73 -21
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/hooks/builtin-policies.ts +5 -1
- package/dist/cli.mjs +3 -3
- package/package.json +1 -1
- package/src/hooks/builtin-policies.ts +5 -1
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{CkmOT-ZvDN-sVULinGVKT → A9pNTZdoYJTVyPAYwQMx5}/_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
|
-
Самый простой способ
|
|
26
|
+
Самый простой способ управления политиками, которые делают ваши ИИ-агенты надежными, сосредоточенными на задачах и работающими автономно — для **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,15 +59,15 @@ bun add -g failproofai
|
|
|
59
59
|
failproofai policies --install
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Записывает записи
|
|
62
|
+
Записывает записи хука в `~/.claude/settings.json`. Claude Code теперь будет вызывать failproofai до и после каждого вызова инструмента.
|
|
63
63
|
|
|
64
|
-
### 2. Запустите панель
|
|
64
|
+
### 2. Запустите панель мониторинга
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
failproofai
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Открывает `http://localhost:8020` — просматривайте
|
|
70
|
+
Открывает `http://localhost:8020` — просматривайте сессии, проверяйте логи, управляйте политиками.
|
|
71
71
|
|
|
72
72
|
### 3. Проверьте, что активно
|
|
73
73
|
|
|
@@ -79,15 +79,15 @@ failproofai policies
|
|
|
79
79
|
|
|
80
80
|
## Установка политик
|
|
81
81
|
|
|
82
|
-
### Области
|
|
82
|
+
### Области действия
|
|
83
83
|
|
|
84
|
-
| Область | Команда |
|
|
85
|
-
|
|
84
|
+
| Область | Команда | Куда записывается |
|
|
85
|
+
|--------|---------|-----------------|
|
|
86
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
|
|
@@ -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
|
{
|
|
@@ -124,7 +124,7 @@ failproofai policies --uninstall --scope project
|
|
|
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,55 +138,55 @@ 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
|
-
|
|
149
|
-
| `block-sudo` | Предотвратить запуск привилегированных системных команд | `allowPatterns` |
|
|
148
|
+
|--------|-------------|:---:|
|
|
149
|
+
| `block-sudo` | Предотвратить запуск привилегированных системных команд агентами | `allowPatterns` |
|
|
150
150
|
| `block-rm-rf` | Предотвратить случайное рекурсивное удаление файлов | `allowPaths` |
|
|
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` |
|
|
151
|
+
| `block-curl-pipe-sh` | Предотвратить передачу ненадежных скриптов в оболочку | |
|
|
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` | Скрыть токены Bearer авторизации из вывода | |
|
|
158
|
+
| `block-env-files` | Предотвратить чтение файлов .env | |
|
|
159
|
+
| `protect-env-vars` | Предотвратить вывод переменных окружения агентом | |
|
|
160
|
+
| `block-read-outside-cwd` | Держать агентов в границах проекта | `allowPaths` |
|
|
161
161
|
| `block-secrets-write` | Предотвратить запись в файлы приватных ключей и сертификатов | `additionalPatterns` |
|
|
162
|
-
| `block-push-master` | Предотвратить случайные
|
|
163
|
-
| `block-work-on-main` |
|
|
162
|
+
| `block-push-master` | Предотвратить случайные отправки в main/master | `protectedBranches` |
|
|
163
|
+
| `block-work-on-main` | Держать агентов подальше от защищённых веток | `protectedBranches` |
|
|
164
164
|
| `block-force-push` | Предотвратить `git push --force` | |
|
|
165
165
|
| `warn-git-amend` | Напомнить агентам перед изменением коммитов | |
|
|
166
|
-
| `warn-git-stash-drop` | Напомнить агентам перед удалением
|
|
166
|
+
| `warn-git-stash-drop` | Напомнить агентам перед удалением временных сохранений | |
|
|
167
167
|
| `warn-all-files-staged` | Поймать случайный `git add -A` | |
|
|
168
168
|
| `warn-destructive-sql` | Поймать DROP/DELETE SQL перед выполнением | |
|
|
169
169
|
| `warn-schema-alteration` | Поймать ALTER TABLE перед выполнением | |
|
|
170
170
|
| `warn-large-file-write` | Поймать неожиданно большие записи файлов | `thresholdKb` |
|
|
171
171
|
| `warn-package-publish` | Поймать случайный `npm publish` | |
|
|
172
|
-
| `warn-background-process` | Поймать
|
|
173
|
-
| `warn-global-package-install` | Поймать
|
|
172
|
+
| `warn-background-process` | Поймать ненамеренные запуски фоновых процессов | |
|
|
173
|
+
| `warn-global-package-install` | Поймать ненамеренные глобальные установки пакетов | |
|
|
174
174
|
| …и другие | | |
|
|
175
175
|
|
|
176
|
-
Полные детали политик и
|
|
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();
|
|
@@ -203,10 +203,10 @@ 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
211
|
| `allow(message)` | Разрешить и отправить информационный контекст Claude |
|
|
212
212
|
| `deny(message)` | Заблокировать операцию; сообщение показано Claude |
|
|
@@ -215,39 +215,39 @@ failproofai policies --install --custom ./my-policies.js
|
|
|
215
215
|
### Объект контекста (`ctx`)
|
|
216
216
|
|
|
217
217
|
| Поле | Тип | Описание |
|
|
218
|
-
|
|
218
|
+
|-------|------|-------------|
|
|
219
219
|
| `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
|
|
220
220
|
| `toolName` | `string` | Вызываемый инструмент (`"Bash"`, `"Write"`, `"Read"`, …) |
|
|
221
|
-
| `toolInput` | `object` |
|
|
222
|
-
| `payload` | `object` |
|
|
223
|
-
| `session.cwd` | `string` |
|
|
224
|
-
| `session.sessionId` | `string` | Идентификатор
|
|
225
|
-
| `session.transcriptPath` | `string` | Путь к файлу
|
|
221
|
+
| `toolInput` | `object` | Параметры входа инструмента |
|
|
222
|
+
| `payload` | `object` | Полная исходная полезная нагрузка события |
|
|
223
|
+
| `session.cwd` | `string` | Рабочий каталог сессии Claude Code |
|
|
224
|
+
| `session.sessionId` | `string` | Идентификатор сессии |
|
|
225
|
+
| `session.transcriptPath` | `string` | Путь к файлу стенограммы сессии |
|
|
226
226
|
|
|
227
|
-
Пользовательские
|
|
227
|
+
Пользовательские хуки поддерживают переходные локальные импорты, async/await и доступ к `process.env`. Ошибки перекрываются открытыми (логируются в `~/.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/` и они будут автоматически загружены — никаких флагов или изменений конфигурации не требуется. Фиксируйте каталог в git и каждый члена команды получит одинаковые стандарты качества автоматически.
|
|
232
232
|
|
|
233
233
|
```text
|
|
234
|
-
# Уровень проекта — зафиксировано в git, общее
|
|
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-` и т.д. для управления порядком. По мере того, как ваша команда открывает новые режимы отказа, добавьте политику и отправьте — все получат обновление при следующем pull. См. [examples/convention-policies/](examples/convention-policies/) для готовых к использованию примеров.
|
|
243
243
|
|
|
244
244
|
---
|
|
245
245
|
|
|
246
246
|
## Телеметрия
|
|
247
247
|
|
|
248
|
-
Failproof AI собирает анонимную телеметрию использования через PostHog
|
|
248
|
+
Failproof AI собирает анонимную телеметрию использования через PostHog, чтобы понять использование функций. Содержимое сессии, имена файлов, входные параметры инструментов или личная информация никогда не отправляются.
|
|
249
249
|
|
|
250
|
-
Отключите
|
|
250
|
+
Отключите её:
|
|
251
251
|
|
|
252
252
|
```bash
|
|
253
253
|
FAILPROOFAI_TELEMETRY_DISABLED=1 failproofai
|
|
@@ -258,14 +258,14 @@ FAILPROOFAI_TELEMETRY_DISABLED=1 failproofai
|
|
|
258
258
|
## Документация
|
|
259
259
|
|
|
260
260
|
| Руководство | Описание |
|
|
261
|
-
|
|
262
|
-
| [
|
|
263
|
-
| [
|
|
264
|
-
| [
|
|
265
|
-
| [
|
|
266
|
-
| [
|
|
267
|
-
| [
|
|
268
|
-
| [
|
|
261
|
+
|-------|-------------|
|
|
262
|
+
| [Getting Started](docs/getting-started.mdx) | Установка и первые шаги |
|
|
263
|
+
| [Built-in Policies](docs/built-in-policies.mdx) | Все 30 встроенных политик с параметрами |
|
|
264
|
+
| [Custom Policies](docs/custom-policies.mdx) | Напишите свои собственные политики |
|
|
265
|
+
| [Configuration](docs/configuration.mdx) | Формат файла конфигурации и объединение областей |
|
|
266
|
+
| [Dashboard](docs/dashboard.mdx) | Мониторинг сессий и проверка активности политик |
|
|
267
|
+
| [Architecture](docs/architecture.mdx) | Как работает система хуков |
|
|
268
|
+
| [Testing](docs/testing.mdx) | Запуск тестов и написание новых |
|
|
269
269
|
|
|
270
270
|
### Запустите документацию локально
|
|
271
271
|
|
|
@@ -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
|
-
Открывает сайт документации Mintlify на `http://localhost:3000`. Контейнер
|
|
277
|
+
Открывает сайт документации Mintlify на `http://localhost:3000`. Контейнер отслеживает изменения, если вы монтируете каталог документации:
|
|
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` этого
|
|
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**. Мы помогаем предприятиям и стартапам улучшить надежность своих ИИ-агентов благодаря нашим собственным агентам, программному обеспечению и опыту. Узнайте больше на [exosphere.host](https://exosphere.host).
|
|
308
308
|
```
|