chore(plugin-catalog): bump composer-modes to 2.0.1 (staging fix) - #113583
Merged
teknium1 merged 1 commit intoSep 18, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Bumps the
composer-modescatalog pin from4f4e1c0b36165d84a9e2db7c71516f5a0c627d72tode372aa34ecfe6adb424f86c04ca2de924984cb0(plugin v2.0.1). Rule 4 of the catalog README:a SHA bump is its own PR, and the diff is the review surface — one line,
old SHA → new SHA.The adopted range
4f4e1c0b..de372aa3is three commits in the plugin repo:1fd6bf5fix(desktop): stage the mode against the stored session id— the fix, plus its regression test2520d32chore(release): 2.0.1— the five version references together + CHANGELOGde372aadocs: record the staging identity contract and the probe that exposes itWhat was broken. The desktop half staged the mode against
host.state.focusedSessionId, which the desktop SDK binds to$focusedRuntimeId— the runtimetile id (short, e.g.
a4b090e3). The core firespre_llm_callwith the stored session id(
agent.session_id, e.g.20260916_192252_7a3c66). The store lookup therefore never matched,store.get_mode()answered with the default (agent),note_for('agent')is empty by design,and no mode note ever reached a turn: every turn ran unframed while the button showed
ask/plan/debug. The failure was silent — from inside a turn, "Agent" and "a lost note" are
indistinguishable.
The fix. One helper (
backendSid()) resolveshost.state.focusedStoredSessionIdfirst andfalls back to the runtime id for shells that do not expose it;
stageMode()and thesession-change reset both go through it, and the boot
capsprobe now prints both ids so a wrongstaging identity is visible in
logs/desktop.loginstead of invisible.Catalog-visible surface: unchanged. Same hooks (
pre_llm_call,pre_tool_call), samemiddleware declarations, no tools, no env vars, no config schema, no self-updating code. The
entry's
shaline is the only edit in this PR.Related Issue
No issue: this is a SHA-bump PR under rule 4. Related, and unaffected by this bump:
(and freeze it per queued message); this package still does not depend on it — it uses the
supported
pre_llm_callpath, append-only.Type of Change
Changes Made
plugin-catalog/composer-modes.yaml—sha:4f4e1c0b…→de372aa3…. No other field, noother file.
How to Test
plugin-catalog-ci.ymlruns), against a directory holding thebumped entry:
python scripts/validate_plugin_catalog.py <dir>→OK: 1 file(s) valid.pytest tests/hermes_cli/test_plugin_catalog.py -q→5 passed.hermes plugins validate .→Validation passed.(manifest,requires_hermes, and thecapability probe comparing
register()against the declared hooks/middleware);python -m pytest -c tests/pytest.ini→103 passed;node --check desktop/plugin.js→ OK;node scripts/smoke_desktop_half.mjs→SMOKE PASSED, and red before the fix(
staged "sess-runtime" — must stage the stored session id).hot-reloaded (
register ver=v13.1), the stage now carries the stored id(
stage ok mode=ask sid=20260916_192252_7a3c66), and readingcontentvsapi_contentback out of
state.dbshows the note arriving for ask/plan/debug whilecontentstaysbyte-for-byte what was typed, and agent stays unframed.
hermes plugins update composer-modes(or a fresh install) checks out thenew pin.
Checklist
Code
fix(scope):,feat(scope):, etc.)composer-modesbump; the merged chore(plugin-catalog): add composer-modes #113242 is the entry being updated)pytest tests/ -qand all tests pass — N/A: this PR changes no Python in this repository. The gates that apply are the catalog validator + loader tests (step 1–2) and the pinned plugin's own suite (step 3).node scripts/smoke_desktop_half.mjs)Documentation & Housekeeping
docs/, docstrings) — or N/A: updated inside the pinned range (docs/architecture.md,docs/verification.md,CHANGELOG.mdunder 2.0.1)cli-config.yaml.exampleif I added/changed config keys — N/A: no config keysCONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — N/A: no change in this repository