Skip to content

feat(cli): Symfony tools: namespace + rename MCP tool focus_config → focus_tools#81

Merged
samuelds merged 4 commits into
developfrom
feat/symfony-cli-naming
Apr 28, 2026
Merged

feat(cli): Symfony tools: namespace + rename MCP tool focus_config → focus_tools#81
samuelds merged 4 commits into
developfrom
feat/symfony-cli-naming

Conversation

@samuelds
Copy link
Copy Markdown
Contributor

Summary

  • New tools: namespace commands (Symfony Console naming style):
    • focus tools:hide <pattern> — hide a tool/glob from MCP clients
    • focus tools:show <pattern> — unhide
    • focus tools:pin <pattern> — mark as _meta.anthropic/alwaysLoad: true
    • focus tools:unpin <pattern> — remove from alwaysLoad
    • focus tools:list — show hidden + alwaysLoad lists
    • focus tools:clear — reset both lists
  • Legacy aliases preserved permanently (no deprecation): filter hide, filter show, filter list, filter clear
  • catalog: namespace aliases added: catalog:list, catalog:add, catalog:remove (alongside existing catalog list/add/remove)
  • MCP tool renamed focus_configfocus_tools (PR just merged, not yet released — clean rename with no breaking change)
    • Actions simplified: hide, show, pin, unpin, list, clear (instead of tools.hide etc.)
    • focus_tools is immune to hidden lists (deadlock protection)
  • 10 new tests for focus_tools MCP tool: all actions, error cases, bench mode immunity

Architecture note

The config logic (tools.hidden / tools.alwaysLoad management) currently lives in cli/src/commands/config.ts. A follow-up PR will migrate this to @focus-mcp/core once core PR #51 (feat/tool-config) is merged and published as core@1.3.0.

TODO follow-up (out of scope for this PR)

Depends on

Test plan

  • All 253 existing tests pass
  • tools:hide, tools:show, tools:pin, tools:unpin, tools:list, tools:clear dispatch correctly
  • filter hide/show/list/clear (legacy aliases) still work
  • catalog:list/add/remove dispatch correctly
  • focus_tools MCP tool: all 6 actions tested (hide/show/pin/unpin/list/clear)
  • focus_tools immune to --hide=focus_*
  • focus_tools accessible in bench mode

🤖 Generated with Claude Code

claude and others added 4 commits April 28, 2026 23:33
- Replace `focus filter` with `focus config tools hide/show/pin/unpin/list/clear`
- New config.ts with full tools.hidden + tools.alwaysLoad management
- Add --pin=<patterns> arg to `focus start` for per-launch alwaysLoad
- MCP: rename focus_filter → focus_config with tools.* action namespace
- README updated to reflect new command surface

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- isHiddenTool now checks `focus_config` (not `focus_tools`) for immunity
- Dispatcher handles `focus_config` (not `focus_tools`) tool calls
- Remove src/commands/filter.ts (superseded by config.ts)
- Update changeset to reflect final feature scope
- Remove dead `runTools` function from focus.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All references to the MCP tool and immunity check now consistently use
focus_config — source, tests, and docs aligned.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add tools:hide/show/pin/unpin/list/clear canonical commands
- Add catalog:list/add/remove canonical aliases
- Legacy filter hide/show/list/clear kept as permanent aliases (no deprecation)
- MCP tool focus_config → focus_tools (actions: hide/show/pin/unpin/list/clear)
- focus_tools is immune to hidden lists (deadlock protection)
- 10 new tests for focus_tools MCP tool actions + immunity

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@samuelds samuelds force-pushed the feat/symfony-cli-naming branch from 51591b3 to b98f06a Compare April 28, 2026 21:33
@samuelds samuelds merged commit e13e2b5 into develop Apr 28, 2026
10 checks passed
@samuelds samuelds deleted the feat/symfony-cli-naming branch April 28, 2026 21:38
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