Files
computer-playbook/roles/dsk-code/tasks/addons/codex.yml
T
kevinveenbirkenbachandClaude Opus 5 3eba518db9 feat(dsk-code): carry each agent's editor extension through the addon contract
b958322400 kept the extension catalogue in vars/main.yml as code_agent_extensions,
a map from role id to extension id filtered through group_names. That put a
catalogue in vars/ where every other role keeps one in meta/addons/, and it knew
only Claude.

The fact splits three ways now, each owned once. meta/services.yml states
whether the host deploys the agent, and is the only place group_names appears.
meta/addons/<id>.yml states the extension id and defers its gate to that flag
through lookup('config'), which is what the addon contract expects and what
test_addon_enabled_no_group_names enforces: an addon testing group_names itself
restates a fact the owning role already carries. vars/main.yml reads the addons
back, and 00_core.yml loops them.

The loop evaluates item.value.enabled | bool in its when rather than filtering
with selectattr. An addon's enabled survives as Jinja text, so selectattr would
read the string 'False' as true and install an extension the host did not ask
for.

codex joins Claude. open-vsx.org serves openai.chatgpt from a verified openai
namespace as 'Codex, OpenAI's coding agent', so the id resolves on the Open VSX
registry that Code - OSS and VSCodium query, not only on the Microsoft one.
Cursor and pi stay out, as b958322400 recorded: neither Anysphere nor
earendil-works publishes there.

The two tasks/addons/ hooks are empty because the generic install loop is the
whole integration; test_addons_integration_tasks requires the file to exist for
a service-coupled addon, and web-app-nextcloud/tasks/addons/deck.yml is the same
shape.

Verified: 396 lints with 363 subtests, including the three that this change
turns green, and the extension ids resolved against the Open VSX API.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-25 13:57:20 +02:00

2 lines
4 B
YAML