Releases: nyxandro/osinara
Release list
Osinara v0.16.6
Osinara v0.16.6
Patch-релиз ограничивает ожидание пользовательского подтверждения, после которого Eve держала
turn припаркованным бессрочно.
Confirmation Window
- Неотвеченные
tool-approvalиquestionотменяются через пять минут; tool не исполняется. - Причина уходит в session context, поэтому агент предупреждает пользователя, что подтверждение
не получено и действие не отработало, и продолжает работу. - Повторный запрос того же подтверждения агент не делает, пока пользователь не попросит явно.
- Framework
session-limitи OAuth-авторизация в окно не входят; строки без доказанного типа
запроса fail-closed и не отменяются никогда.
Почему это понадобилось
Approvals не имели срока жизни, а sessionNeedsRotation безусловно ветовал ротацию, пока
pending_operation истинно. Один неотвеченный запрос от 21 августа заморозил личный чат владельца
почти на трое суток: каждый следующий turn парковался с неразрешённым input batch, ответа не было,
при этом группы работали в своих сессиях. Ручное восстановление уже применялось в v0.16.3 и v0.16.4,
но механизма самовосстановления не появилось.
Границы
- Ответ Eve несёт заново провалидированный Telegram auth: Eve заменяет auth сессии доставленным,
и фиктивный принципал лишил бы возобновлённый turn прикладного контекста. - Отмена берёт строку под lease и требует, чтобы сессия всё ещё владела припаркованным Eve run.
- Терминальное состояние пишется только после того, как Eve приняла отмену.
- Погашенное по таймауту подтверждение не является доказательством исполнения tool.
- Sweep живёт за приватным роутом, недоступным с edge и защищённым внутренним токеном.
Проверка
- Unit- и integration-контракты на окно, lease, гонку с нажатием кнопки, исключение
session-limit
и fail-closed для строк без типа. - TypeScript typecheck, полный Vitest suite и Docker Compose gate с реальной PostgreSQL.
Osinara v0.16.5
Osinara v0.16.5
Patch-релиз закрывает внешний Telegram-контур от зависающих child-agent turns и технических
запросов на продление model budget.
External Input Boundary
- Synthetic Eve
session-limitво внешней группе завершается fail-closed до session parking,
approval persistence и Telegram delivery. - Участник внешней группы больше не может выдавать зависшему turn новый token budget.
- Проверяется и request kind, и synthetic tool name, поэтому неверно классифицированный framework
prompt не обходит запрет.
External Delegation
- Нативный root-only
agentудаляется из runtime external mode по точному Eve fingerprint и
заменяется same-name denial tool. - Модель внешней группы больше не получает delegation-инструкцию и не может запускать child session.
- Authored tools и declared subagent lookalikes не затрагиваются; trusted private/family delegation
сохраняется. - Для оставшихся trusted turns действует общий circuit breaker в 32 model steps.
Проверка
- Unit contracts проверяют отсутствие Telegram, parking, route и approval side effects для
externalsession-limit. - Runtime patch contract исполняет установленную Eve-функцию и проверяет external, private, family,
review и lookalike cases. - Tool-surface и prompt contracts проверяют полный запрет external child delegation.
Osinara v0.16.4
Osinara v0.16.4
Patch-релиз останавливает один agent turn до того, как повторяющиеся model calls превращаются в
неограниченный цикл и блокируют durable Telegram ingress.
Model Step Safety
- Один turn ограничен 32 model calls: разрешены zero-based steps с 0 по 31.
- На следующем step Eve получает валидную fail-closed AI SDK model, которая завершает оба пути
вызова стабильной ошибкойAGENT_TURN_MODEL_STEP_LIMIT_EXCEEDEDбез обращения к provider. - Blocking model исключает небезопасное поведение Eve 0.32.0, при котором ошибка dynamic resolver
логируется, а выполнение продолжается через fallback model. - Некорректные step coordinates или конфигурация лимита также блокируют model call с кодом
AGENT_TURN_MODEL_STEP_STATE_INVALID.
Production Recovery
- Зависший ingress update терминально закрыт без повторного model call, а canonical session
ротирована после подтверждённого неоднозначного side-effect boundary. - Telegram backlog полностью обработан после controlled restart; pending и processing updates
отсутствуют. - Экземпляр sandbox зависшего Eve run удалён после проверки labels и отсутствия полезных процессов.
Проверка
- Добавлены unit contracts для точной границы, обоих AI SDK call paths и fail-closed invalid state.
- GitHub Actions Docker Compose test suite и автоматическое code review прошли успешно.
Osinara v0.16.3
Osinara v0.16.3
Patch-релиз ограничивает размер durable Eve-сессий до того, как filesystem workflow journal
перестаёт укладываться в жёсткий replay deadline.
Session Rotation
- Canonical session теперь ротируется после 50 завершённых turns вместо 250.
- Pending HITL и OAuth операции по-прежнему закреплены за исходной session до terminal boundary.
- Порог выбран с запасом по production incident: journal с 118 turns, 1195 workflow events и
239 steps превысил максимальную длительность replay Eve в 240 секунд. - Добавлен regression test для точной границы: 49 turns сохраняют session, 50 turns создают новую
generation.
Production Recovery
- Зависший ingress update терминально закрыт без автоматического повтора после подтверждённого
REPLAY_TIMEOUT. - Повреждённая canonical session ротирована с сохранением старого durable journal.
- После controlled restart очередь полностью обработана, новый Telegram turn получил ответ через
свежую Eve session, а agent вернулся к нормальной загрузке.
Проверка
- Targeted session rotation policy test.
- TypeScript typecheck и полный Vitest suite.
Osinara v0.16.2
Osinara v0.16.2
Patch-релиз синхронизирует изменённый model bearer key между root deployment process и candidate
Docker Compose после one-time Codex bridge.
Model Environment
- После атомарной замены
MODEL_API_KEYв/opt/osinara/.envbridge также обновляет exported
MODEL_API_KEYтекущего systemd process. - Quoted dotenv token безопасно преобразуется в runtime value без
eval; неподдерживаемый синтаксис
по-прежнему отклоняется до миграции. - Это закрывает приоритет shell environment над
docker compose --env-file: candidate agent больше
не получает прежний NeuralDeep key при первом запуске после Codex cutover. - Добавлены regression tests для update и explicit initial deployment с заранее экспортированным
устаревшим model key.
Production Recovery
v0.16.0успешно прошёл backup, migration, CLIProxy upstream smoke и promotion.- Первый agent container получил старый process-level key и вернул
MODEL_CALL_FAILED; данные и
OAuth не пострадали. - Agent был пересоздан из promoted release с чистым env-file. Internal
/v1/modelsи реальный
gpt-5.6-lunacompletion после восстановления вернули200.
Проверка
- Production bridge tests для quoted/unquoted dotenv и process environment precedence.
- Полный controller source-order test и
bash -n. - TypeScript typecheck и полный Vitest suite.
Osinara v0.16.1
Osinara v0.16.1
Patch-релиз исправляет загрузку root-owned production controller перед миграцией на Codex.
Application runtime, модель gpt-5.6-luna, OAuth volume и Compose graph не меняются относительно
v0.16.0.
Production Controller
- Release downloader и one-time bridge больше не объявляют один readonly asset constant под
одинаковым именем при последовательномsourceмодулей. - Добавлен regression test, который загружает
common,database,release,bridgeиbackup
в точном production-порядке и отклоняет любые глобальные collisions. - Ошибка
v0.16.0происходила до claim approved proposal, остановки сервисов, миграции и изменения
данных. Текущая production версия оставалась healthy, а предложение сохранило статусapproved.
Проверка
bash -nдля entrypoint и всех deployment modules.- Runtime source-order test для полного controller module set.
- Полный Vitest suite: 246 файлов passed, 82 skipped; 1603 теста passed, 277 skipped.
- TypeScript typecheck.
Osinara v0.16.0
Osinara v0.16.0
Релиз переводит production agent с текущего NeuralDeep qwen3.8-27b transport на подписочный OpenAI Codex через
изолированный CLIProxyAPI, исправляет доставку scheduled Telegram turns и обновляет production
controller для безопасной миграции OAuth-состояния.
GPT-5.6 Luna
- Основной и vision route используют
gpt-5.6-lunaчерез OpenAI Chat Completions. - Reasoning зафиксирован на
medium; запрос отправляет явныйreasoning_effort. - Контекст установлен в 372 000 токенов, максимальный ответ ограничен 128 000 токенов.
- Модель поддерживает text, image input и application tools без отдельного неявного vision fallback.
- Schema разрешает plain HTTP только для точного Docker DNS endpoint
http://cli-proxy-api:8317/v1; любые другие HTTP model endpoints отклоняются.
Codex OAuth Gateway
- CLIProxyAPI обновлён с
v7.2.73доv7.2.137и закреплён точным image digest. - OpenCode OAuth преобразуется в нативный Codex auth record без повторного входа; agent не получает
access token, refresh token или account ID. - OAuth хранится в именованном volume
osinara-production-cli-proxy-auth; обновлённые CLIProxy
токены переживают container replacement и входят в последующие pre-deploy backups. - Gateway запускается только при наличии полного writable credential с правами
0600. - Management API, control panel, plugins, request retries, cooldown scheduling и file logging
отключены. Клиентский доступ защищён отдельным внутренним bearer key. - Agent зависит от здорового CLIProxy service; gateway health проверяет авторизованный
/v1/models.
Production Cutover
- Добавлен одноразовый bridge только для перехода с точной
v0.15.14наv0.16.0. - Controller проверяет attested Codex model config, root-owned OAuth seed, точный hash текущего
NeuralDeep config, обязательные model/proxy assignments и сохранённый DeepSeek rollback credential
до изменения runtime state. - OAuth volume создаётся backup preflight как candidate-only и удаляется при безопасном
pre-migration failure. - Root-controller
--initial 0.16.0создаёт отсутствующий OAuth volume отдельно, фиксирует его root
как10001:10001 0700и использует тот же проверенный seed; standalone installer остаётся на
direct-provider Compose без CLIProxy. - После остановки writers и проверенного snapshot controller отмечает irreversible migration,
заполняет пустой volume, атомарно меняет model config и связываетMODEL_API_KEYс существующим
CLI_PROXY_API_KEY. - Root seed удаляется только после успешного gateway, agent и edge health check.
- До promotion controller выполняет один bounded upstream completion на
gpt-5.6-lunaс
reasoning_effort=medium; локального/v1/modelsнедостаточно для подтверждения OAuth. - Legacy MiniMax compatibility config и
MODEL_UPSTREAM_API_KEYудалены.
Scheduled Telegram Delivery
- Plain Telegram sender принимает первый proactive delivery receipt даже когда Eve ещё не успела
заполнитьchannel.state.chatType. - Receipt сохраняет подтверждённые
chatTypeиmessageId, а последующая boundary-проверка сверяет
фактическую Telegram delivery target с scheduled target. - При ошибке доставки сохраняется исходный stable code; secondary confirmation error больше не
маскирует первопричину. - Добавлены regression tests для отсутствующего initial chat type, target mismatch и failure code.
Проверка
- Реальный локальный OAuth smoke подтвердил импорт текущей OpenCode-сессии, наличие
gpt-5.6-lunaв/v1/modelsи успешный Chat Completions ответ сreasoning_effort=medium. - Добавлены tests для OAuth entrypoint, internal transport schema, reasoning payload, persistent
volume, root controller allowlist и одноразового v0.16.0 bridge. - Production-equivalent Docker Compose gate включает migrations, typecheck, полный Vitest suite и
eve build.
Osinara v0.15.14
Osinara v0.15.14
Patch-релиз восстанавливает надёжную запись памяти после Telegram HITL и в публичных группах,
добавляет единый контракт исправления tool errors и закрывает неоднозначные повторы внешних
side effects. Также уточнены Google Workspace, файловые и skill-контракты.
Память и Telegram HITL
- После подтверждения Telegram HITL восстанавливается точный verified actor текущего callback:
telegramActorIdиtelegramActorKindбольше не теряются при resume. - Resume памяти разрешён только при совпадении application session, Eve session, turn и actor с
сохранённым source set; чужой, устаревший или несвязанный callback отклоняется до записи. - Scheduled turns больше не получают
rememberи не могут создавать память без текущего
пользовательского сообщения-источника. rememberпринимает строго проверенный JSON-сериализованныйsubject, который NeuralDeep может
вернуть вместо вложенного объекта. Невалидный JSON, лишние поля, неизвестный subject type и
неподтверждённые refs по-прежнему отклоняются.- Model-facing schema и описание
rememberтеперь явно объясняютbasis, scope, subject,
sourceSequence и атомарные thread create/attach операции.
Исправление ошибок инструментов
- Все mode-scoped application tools используют единый model-facing error contract с полями
code,category,reason,correction,retryableиsideEffectStatus. - Исправляемые input/not-found ошибки указывают безопасный следующий вызов; authorization и
неоднозначные side effects запрещают автоматический повтор. - Неожиданные внутренние ошибки преобразуются в безопасную диагностику без утечки transport,
filesystem, token и stack-trace деталей в модельный контекст. - Descriptors всех private, family, external, scheduled, subagent и memory-review surfaces теперь
описывают назначение, вход, результат и правила восстановления после ошибки в общем ограниченном
prompt budget. - Добавлен opt-in model eval для трёх траекторий: исправление input, read-проверка после ambiguous
mutation и корректная обработка Google Workspace policy rejection.
Google Workspace
- Gmail resource и method передаются отдельными
argvэлементами; schema discovery использует
top-level формуschema gmail.<resource>.<method>. - Reviewed allowlist различает read и mutation команды и объясняет ошибку синтаксиса без ложного
вывода о read-only OAuth-профиле. - Пустые, слишком длинные и содержащие NUL аргументы отклоняются до запуска runner.
- Access token удаляется из stderr и diagnostics; пустой token считается ошибкой авторизации и не
передаётся в runner. - Timeout, cancellation и transport failure учитывают тип команды: read можно ограниченно
повторить, mutation получаетsideEffectStatus=unknownи не повторяется вслепую. - Trusted GWS skills синхронизированы с реальным allowlist для Gmail mutations, route-specific
flags и запрета runtime-генерации отсутствующих skill packages.
Файлы, вложения и локальные сервисы
- Transport failure при скачивании Telegram attachment возвращает безопасную структурированную
ошибку и не запускает скрытый повтор. - Повреждённый или неполный Telegram send response классифицируется как ambiguous delivery, чтобы
модель не отправила файл повторно после возможного успешного side effect. - После подтверждённой отправки сбой локальной persistence или group-journal projection логируется,
но результат сохраняетdelivered=true,sideEffectStatus=completedиretryable=false. - Ошибки vision provider и локального E5 embedding service больше не раскрывают сетевые детали и
дают явную инструкцию не повторять вызов автоматически. - DOCX, PDF и XLSX skills используют абсолютные materialized skill paths; исправлены регистр
supporting-файлов PDF и отсутствующий Node.js import в DOCX quick start.
Scheduled turns и T-Invest
- Scheduled Telegram auth содержит verified actor identity, но scheduled surfaces остаются без
memory и behavior mutations, для которых нужен живой источник текущего сообщения. - Любая T-Invest торговая операция в sandbox и full требует preview и явный
--confirmдля
конкретной заявки.stonksModeбольше не отменяет эту границу Osinara. - Full mode дополнительно сохраняет deployment trading gate; order replace и stop-order требуют
заранее выбранный idempotency key.
Проверка
- Production-equivalent Docker Compose gate: 325 test files, 1862 tests, migrations, typecheck и
eve build. - Отдельно проверены AI SDK validation точного production payload
remember, все mode-scoped tool
surfaces, Google Workspace recovery, Telegram delivery ambiguity и skill package integrity. - Изменений схемы PostgreSQL и production Compose graph в релизе нет.
Osinara v0.15.13
Osinara v0.15.13
Patch-релиз включает документированную session-sticky маршрутизацию NeuralDeep для повторного
использования upstream KV-cache в многошаговых и многораундовых диалогах.
NeuralDeep session cache
- Каждый model step NeuralDeep передаёт непрозрачный Eve session ID в OpenAI-compatible поле
user, которое NeuralDeep использует для закрепления сессии за одним upstream. - Все шаги одного turn и последующие turns текущей Eve-сессии используют одинаковый routing key;
штатная session rotation автоматически создаёт новый ключ. - Telegram user ID, chat ID, family ID и другие прикладные идентификаторы провайдеру в этом поле не
передаются. - Для DeepSeek, MiniMax, OpenCode Go и OpenRouter provider options не изменились.
- Sticky routing повышает вероятность повторного использования KV-cache, но не превращает его в
durable cache: NeuralDeep не публикует TTL и не гарантирует cache hit.
Eve build contract
- Основной direct model выбирается через Eve
step.started, поскольку только step-scoped resolver
может безопасно вернуть live AI SDK model вместе с session-specific provider options. - Post-build validator принимает числовые bundler-алиасы
defineDynamic, сохраняя строгую проверку
единственногоstep.startedtool resolver и запрет replay-prone scopes.
Проверка
- Production-equivalent Docker Compose gate: 320 test files, 1778 tests, typecheck и
eve build. - Transport contract подтверждает, что
providerOptions.neuraldeep.userотправляется корневым полем
userв JSON запроса/v1/chat/completions.
Osinara v0.15.12
Osinara v0.15.12
Patch-релиз добавляет verified Telegram channel senders, закрывает публикацию технических ошибок в
общих чатах и подключает NeuralDeep как третий прямой model provider.
Telegram channel senders
Channel_Botиsender_chatклассифицируются отдельно от Telegram user identity.- Channel sender получает отдельную service identity и не может подтверждать HITL, выполнять
owner-only операции или наследовать пользовательские tools и skills. - Timeline сохраняет channel attribution, а memory provenance привязана к точному вызывающему actor.
- Migration
075добавляет actor-bound source identity и обновляет persisted memory contracts.
Private failure notifications
- Terminal
turn.failedиsession.failedотправляются только в Telegram private chats. - Группы, supergroups, channels и неизвестный chat type не получают служебных сообщений об ошибках.
- Текстовые HITL refusals не публикуются в общих чатах; приватный callback alert сохраняется.
- Failed state, session rotation, scheduled-run terminalization, logs и HITL cleanup выполняются как
прежде.
NeuralDeep
- Добавлен строгий OpenAI-compatible endpoint
https://api.neuraldeep.ru/v1. - Модель
qwen3.8-27bпроверена на text, vision, tool call и continuation после tool result. - Используется нативный reasoning модели без неподтверждённого
reasoning_effort; вариант
qwen3.8-27b-noreasonне выбирается для основного agent loop. - Переключение provider остаётся атомарным: preflight, restart, health verification и rollback
используют существующий production model-config controller.
Проверка
- Production-equivalent Docker Compose gate: 318 test files, 1773 tests, typecheck и
eve build. - Live NeuralDeep smoke: catalog, text, vision и двухшаговый tool-call flow.