Skip to content

feat(provider-devin): центральная настройка отключения нативных субагентов - #24

Merged
nick8cyber merged 2 commits into
mainfrom
feat/provider-devin-subagents-setting-thr_r2eik2fuzy
Nov 10, 2026
Merged

nick8cyber merged 2 commits into
mainfrom
feat/provider-devin-subagents-setting-thr_r2eik2fuzy

Conversation

@nick8cyber

Copy link
Copy Markdown
Owner

Контекст

Продолжение #20/#22: центральная настройка subagentsDisabled (Settings → Providers) теперь доезжает и до провайдера Devin. У Devin субагенты (run_subagent) видны в треде как delegation-карточки — проблемы невидимости нет, но запрет должен работать той же ручкой.

Что сделано

  • server.ts: bb.settings.define({subagentsDisabled}) (default false — субагенты Devin видимы и допустимы) + deriveProviderOptions → providerSubagentsEnabled (форма codex: !== true, undefined→enabled).
  • host.ts: тонкая обёртка над вендорным мостом — на thread/start/resume/fork читает provider option и применяет к subagents_enabled в юзерском конфиге Devin (единственный рычаг: devin acp читает только его; ключ user-only, применяется живьём к сессиям).
  • src/subagent-gate.mjs: JSONC-безопасные правки — стемп false с запоминанием prior в dataDir/subagents-gate.json; включение настройки откатывает ровно наш стемп. Чужой subagents_enabled:false (в т.ч. поставленный devin-hooks/install.py) не трогается ни в одну сторону.
  • scripts/subagent-gate.test.mjs: 8 кейсов (parse/insert/flip/restore, комментарии JSONC). Спека §3 и README обновлены.

Неблокирующее примечание: у конфига Devin нет per-session канала — действие глобально, затрагивает интерактивный devin на хосте. Это задокументировано в описании настройки и спеке.

Проверки

  • npm test: 18/18 (диалект + gate).
  • tsc --noEmit чисто, bb plugin build . собран.

Источник: bb тред thr_r2eik2fuzy

…ents_enabled

Источник: bb тред thr_r2eik2fuzy — тот же контракт что у agy (#22): настройка
'Disable provider subagents' через deriveProviderOptions доезжает как
providerSubagentsEnabled. У devin нет per-session провода запрета — devin acp
читает только юзерский конфиг (subagents_enabled, user-only, применяется
живьём). Host-обёртка над вендорным мостом стемпит false при запрете и
откатывает ровно свой стемп при включении (prior в dataDir); чужой
subagents_enabled:false (devin-hooks/install.py) не трогается. JSONC-safe.
Default false — субагенты Devin видны delegation-карточками. Тесты 18/18.
…люч гейта

Advisor nit по PR #24: хук bb_subagents.py ловил ложные срабатывания —
GUARD_RE матчил литерал '.config/devin' в ЛЮБОМ tool_input, включая
исходники плагина, которые этим конфигом управляют (subagent-gate.mjs).
Сужено: домашние пути — только с домашним якорем (~, HOME, /home/USER,
/Users/USER); для write/edit/apply_patch/notebook_edit проверяется путь
назначения, не содержимое (patch_targets). Пути devin-hooks/ и deployed-
hooks-каталога по-прежнему защищены.

Установщик хуков: subagents_enabled=false теперь только при первом
запуске (setdefault) — иначе каждый rerun перетирал бы ключ, которым
теперь владеет центральная настройка subagentsDisabled (host-gate).
На хосте старый стемпнутый false снят миграцией — гейт владеет ключом
(backup config.json.bak-gate-migration).

Тесты: +4b регрессия (7 кейсов) — fails=0.

Источник: bb тред thr_r2eik2fuzy
@nick8cyber
nick8cyber merged commit be25d8a into main Nov 10, 2026
@nick8cyber
nick8cyber deleted the feat/provider-devin-subagents-setting-thr_r2eik2fuzy branch November 10, 2026 23:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant