berimor 0.40.0 → 0.42.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/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
  [![npm](https://img.shields.io/npm/v/berimor?logo=npm&label=npm)](https://www.npmjs.com/package/berimor)
15
15
  [![CI](https://img.shields.io/github/actions/workflow/status/devpilgrin/berimor/ci.yml?branch=main&label=CI)](https://github.com/devpilgrin/berimor/actions/workflows/ci.yml)
16
16
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
17
- [![Tests](https://img.shields.io/badge/tests-985%20green-brightgreen)](#инфраструктура-проекта)
17
+ [![Tests](https://img.shields.io/badge/tests-992%20green-brightgreen)](#инфраструктура-проекта)
18
18
 
19
19
  ![Rust](https://img.shields.io/badge/Rust-stable-DEA584?logo=rust&logoColor=white)
20
20
  ![WebAssembly](https://img.shields.io/badge/sandbox-Wasmtime-654FF0?logo=webassembly&logoColor=white)
@@ -134,6 +134,10 @@ Deny-таблица деструктивных операций не переи
134
134
 
135
135
  **SGR: схема ведёт рассуждение** (0.30.0): контракт может объявлять поля-обоснования ДО целевых — `risk_factors` (непустой список) перед `risk` в `ClassificationOut`; заполнив факторы, модель назначает оценку с опорой, а не произвольно. Порядок полей в JSON Schema соответствует порядку объявления (schemars `preserve_order`). На провайдерах с constrained decoding (`response_format = "json_schema"` в `[[providers]]`: OpenAI-совместимые, Ollama через `format`, llama.cpp) порядок генерации принуждается схемой физически — модель не может выдать число, не заполнив факторы. На провайдерах без constrained decoding (DeepSeek, Kimi — только `json_object`) работает мягкий уровень: порядок полей в промпте + обязательность по схеме + валидация медиации. Правило для конфиг-контрактов: поля-обоснования объявляйте раньше целевых. Автономный llama.cpp (in-process) принуждает порядок GBNF-грамматикой, построенной из схемы контракта (0.31.0).
136
136
 
137
+ **Волна E: память** (0.42.0): Qdrant-адаптер слоя Facts — `[memory] qdrant_url = "http://127.0.0.1:6333"` (+ `qdrant_collection`, `qdrant_api_key_env`): семантический поиск по HNSW-индексу вместо полного скана SQLite (чистый HTTP/JSON, gRPC-клиент не прибавлен); upsert/scroll/cosine/hybrid/delete проверены живым прогоном против реального Qdrant. Кэш ответов модели по ТОЧНОМУ хэшу запроса — `[agent] response_cache = true`: повторный вызов с тем же входом не идёт к провайдеру (попадание не пишет usage — вызова не было); хранилище — отдельный `<storage>.cache.db` (удаление = инвалидация); кэш по похожести эмбеддингов осознанно не строится (недетерминизм ответа).
138
+
139
+ **Волна D: Rego-правила гейта** (0.41.0): внешняя политика OPA/Rego поверх статических правил capability-гейта — через regorus (in-process, без sidecar). `[gate] rego_policy = "policy.rego"` + `environment = "prod"`: политика (`package berimor`, `deny contains msg if { ... }`) видит `input.tool`, `input.args`, `input.mutates`, `input.environment` и может только запрещать строже статики — разрешить слабее нельзя, ядро остаётся детерминированным. Ошибка разбора — отказ старта, ошибка вычисления — fail-closed. Пример из заявки работает: «terminal.exec запрещён в prod-окружении».
140
+
137
141
  **Волна C: LLM-as-a-Judge** (0.40.0): `berimor eval <dir> --judge` — после прогона golden-набора сильный провайдер (первый в порядке failover) оценивает финальное состояние каждого завершённого сценария: скор 1-5 и обоснование пишутся событием `judge_score` в журнал прогона сценария и в вывод. Критерии — файл `<сценарий>.judge.md` рядом с входом (иначе рубрика по умолчанию: полнота, точность, отсутствие выдумок, форма). `--judge-threshold <N>` — CI-гейт: средний балл ниже порога = ошибка команды. Разбор ответа судьи идёт через тот же EOF-ремонт медиации; незавершённые сценарии (гейт, ошибка) судья честно пропускает.
138
142
 
139
143
  **Волна B: наблюдаемость** (0.39.0): `berimor otlp <run> --endpoint <url>` — прогон процесса как трейс в OTLP/HTTP JSON: корневой спан запуска, спан на узел графа, спан вызова LLM (латентность + токены в атрибутах), human_gate (интервал до ответа/таймаута), ходы инструментов свободного цикла. traceId/spanId детерминированы (повторный экспорт идемпотентен). Принимается коллекторами Jaeger и Grafana Tempo (порт 4318) и Langfuse — единый OTLP, отдельные экспортёры не нужны; заголовки авторизации — `--header 'Name: value'`.
@@ -193,7 +197,7 @@ flowchart LR
193
197
 
194
198
  **Rust-workspace по крейту на компонент** — Process Engine, Mediation, Executors, Memory, Capability, Model Pool, Actors, Tool Runtime, Context Engine, Eval, Storage. Гостевой WASM-модуль (`codeact-guest/`) живёт отдельным crate и закоммичен как готовый артефакт — обычная сборка не замедляется.
195
199
 
196
- **Дисциплина проверок.** Каждый релиз: `cargo fmt` + `clippy -D warnings` + `cargo test --workspace` (985 тестов: юнит, интеграционные, e2e через настоящий бинарник, золотые фикстуры процессов и вредоносных вводов). Критические компоненты проходят обязательное независимое ревью. Полный самостоятельный аудит (`docs/audit-2026-07-31.md`) — **все находки закрыты или осознанно задокументированы**.
200
+ **Дисциплина проверок.** Каждый релиз: `cargo fmt` + `clippy -D warnings` + `cargo test --workspace` (992 тестов: юнит, интеграционные, e2e через настоящий бинарник, золотые фикстуры процессов и вредоносных вводов). Критические компоненты проходят обязательное независимое ревью. Полный самостоятельный аудит (`docs/audit-2026-07-31.md`) — **все находки закрыты или осознанно задокументированы**.
197
201
 
198
202
  **Supply chain как у взрослых.** Кросс-платформенные релизы (Linux x64/arm64, macOS arm64, Windows x64) с keyless-подписью cosign/sigstore — приватного ключа не существует нигде. Проверка: `berimor verify <архив>`. npm-публикация с provenance, SBOM (CycloneDX) в пайплайне, самообновление (`berimor self-update`) реализовано на примитивах Process Engine — тот же журнал и восстановление после сбоя, что у обычных процессов, а не ad hoc скрипт.
199
203
 
package/checksums.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "berimor-v0.40.0-darwin-arm64.tar.gz": "59a1535c3c580a33f66e3502e2af45bc84250a63d36db19282f81e9b48415483",
3
- "berimor-v0.40.0-linux-arm64.tar.gz": "0ea8e111fa3df1ea2bfae3191a40449e0704dbf933f97eba0701b0b8406d245c",
4
- "berimor-v0.40.0-linux-x64.tar.gz": "a67a0771c4c0303dfc2ee77a624f2f6d33bb6546cdac53095e6d9cf1321bcb46",
5
- "berimor-v0.40.0-win32-x64.zip": "aa9f720bf416c61e26aaf2bd73965a51a7d614e0a4f43633ef3ac6148123df44"
2
+ "berimor-v0.42.0-darwin-arm64.tar.gz": "9d2ff0cb7308f64956167571a1aebf6b705a9d594d12e60439af84462c807edb",
3
+ "berimor-v0.42.0-linux-arm64.tar.gz": "867310dbed5582e5c35953ac30be6a06d3343ad247454cac8ffec00f58fca809",
4
+ "berimor-v0.42.0-linux-x64.tar.gz": "31be281cbc1240de56d1735b3882b5d93b9e5772e5c924ce9a71a284d6998556",
5
+ "berimor-v0.42.0-win32-x64.zip": "ee005c2b8a916ad42e533736e4890db381333debc405cf3276a78a1b3610d77c"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "berimor",
3
- "version": "0.40.0",
3
+ "version": "0.42.0",
4
4
  "description": "Berimor — агентный CLI для LLM: интерактивный чат с инструментами (файлы, терминал, HTTP), детерминированные процессы, аудит и replay. Этот пакет — установщик платформенного бинарника.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {