The toolset collapse was subtractive against explicit user intent: the
strippable toolsets (messaging, smart-home, music, computer-use, …) are
off-by-default for everyone, so collapsing did nothing for the median
user while silently disabling tools that opted-in users deliberately
enabled — and image-gen is genuinely useful in frontend/game-dev coding.
- auto (default) and on are now prompt-only: operating brief + workspace
snapshot, configured toolsets untouched.
- focus (new, explicit opt-in; aliases: strict, lean) keeps the previous
behavior — collapse to the coding toolset + enabled MCP servers.
- RuntimeMode carries config_mode; toolset_selection() returns None
unless mode is focus. cli/tui call sites unchanged (None falls through
to normal platform resolution).
Evolve coding-context from a pair of loose functions into one resolved-once
posture object so the coding/general distinction is decided in a single place
and read by every domain, rather than re-probed ad hoc.
- ContextProfile registry (coding/general): declarative posture data — toolset
to collapse to, operating brief, plus model_hint/memory_policy seams for
future routing/memory consumers.
- RuntimeMode: immutable, resolved once via resolve_runtime_mode(); exposes
toolset_selection() and system_blocks(). Detection is not memoized so a
long-lived gateway/TUI process can't pin a stale posture.
- Detection now fires on a git repo OR a recognised project root (pyproject,
package.json, Cargo.toml, go.mod, AGENTS.md, …), walking up to the workspace
root — additive, so a non-git project dir also counts.
- Enriched operating brief with Cursor-grade patterns: trace symbols before
editing, never substitute chat code blocks for tool edits, re-read a file
before retrying a failed patch, cap linter-fix loops (~3) before asking,
verify deps against the manifest.
- system_prompt routes through coding_system_blocks(); cli/tui keep calling
coding_selection() (now thin wrappers). Subagents inherit the posture for
free via existing toolset inheritance + the shared prompt builder.
Back-compat: is_coding_context / coding_selection / build_coding_workspace_block
/ CODING_AGENT_GUIDANCE all preserved.
When Hermes runs on an interactive coding surface (CLI, TUI, desktop app,
ACP) inside a git repo, it now shifts into a coding posture:
- Tool restriction: the toolset collapses to a new `coding` set (files,
terminal, search, web docs, skills, todo, delegate, vision, browser) plus
the user's enabled MCP servers. Messaging / TTS / image-gen / smart-home /
music / cron / computer-use fall away.
- Operating brief: a Cursor-style system block (gather context before
editing, focused diffs, verify, never fabricate, git is the user's).
- Live workspace snapshot: git root, branch + upstream (ahead/behind),
worktree, dirty/staged counts, recent commits — built once per session
(cache-safe; never re-probed per turn).
Activation via `agent.coding_context` (auto|on|off, default auto). `auto`
fires only on interactive surfaces in a git repo; messaging platforms are
never affected. A `--toolsets` flag or `HERMES_TUI_TOOLSETS` pin always wins.