|
profiles: tool_developer folds into developer
The profile was a duplicate on every axis we could measure. 22 of its 26 native tools were already developer's; the four it alone held — reload_tools, create_mcp_server, test_mcp_tool, mcp_status — are 2.9 KB of schema. Its model chain was the same seven models. Of its 14 KB prompt, about 8 KB was copied verbatim from developer's (the whole `## Orchestration model` block and everything from `## Editing policy` down), and most of the remainder restated manuals/create_mcp_server.md, which already carried the same ten-step workflow in more detail. It was not a specialisation, it was a snapshot: `git log -S '"reload_tools"'` shows the tool lived in developer until 61fa370 rewrote that profile around MCP and cut it off. What kept it alive was a premise that no longer holds — that Navi's own capabilities would be written as in-repo tools. They are MCP servers now, and an MCP server is not a file in this repository with a life of its own: it is an isolated process registered from mcp_servers.d/. So there is no reason left for a profile whose only distinct feature is a toolset a general developer profile can hold, and every reason to stop maintaining a second prompt that drifts against the first. - developer: + reload_tools, create_mcp_server, test_mcp_tool, mcp_status (24 → 28 native). Its sub-agent gains tool_manual, which is what it actually needed to reach the manual while writing a server — the previous tool_developer sub-agent had it, developer's did not. - server_admin: + reload_tools only (24 → 25). Adding a third-party MCP server is something this profile does as often as developer does. Deliberately not to its sub-agent: reconnecting the MCP manager is a process-wide operation belonging to the main agent. - The prompt and the manual took on what the deleted profile knew and create_mcp_server.md did not: reload_tools before the first test_mcp_tool (a freshly registered server is not connected, so the test fails and the iteration is wasted), the smoke test read by exit code — 124 means timeout killed a server still running, 0 means it exited on its own, usually a main() without parentheses — absolute command/cwd, mcp_status as discovery only, and the steps that stay inline instead of going to a sub-agent. mcp_status and test_mcp_tool were built without an MCP manager, and their fallback did `from navi.api.deps import _mcp_manager` — a name that does not exist, so a live call raised ImportError rather than the intended "MCP manager not available". The tools always passed a manager in tests, which is why nothing caught it. Both now receive the manager at construction and fall back to the live one lazily. Sessions and profile_overrides are reassigned before the restart: agent.py resolves the session's profile without a guard, so a deleted profile turns every session that referenced it into an uncaught ProfileNotFound. Nothing in the test suite pins the profile inventory, and profiles are read once at import time — reload_tools does not re-read them — so this ships as a restart, and the restart is also what makes it take effect. |
|---|
|
|
| README.md |
|---|
| docs/profiles.md |
|---|
| docs/tools.md |
|---|
| manuals/create_mcp_server.md |
|---|
| manuals/spawn_agent.md |
|---|
| navi/core/agent.py |
|---|
| navi/core/registry.py |
|---|
| navi/profiles/developer/config.json |
|---|
| navi/profiles/developer/subagent_system_prompt.txt |
|---|
| navi/profiles/developer/system_prompt.txt |
|---|
| navi/profiles/navi_code/system_prompt.txt |
|---|
| navi/profiles/server_admin/config.json |
|---|
| navi/profiles/tool_developer/config.json 100644 → 0 |
|---|
| navi/profiles/tool_developer/subagent_system_prompt.txt 100644 → 0 |
|---|
| navi/profiles/tool_developer/system_prompt.txt 100644 → 0 |
|---|
| navi/tools/mcp_status.py |
|---|
| navi/tools/spawn_agent.py |
|---|
| navi/tools/test_mcp_tool.py |
|---|
| tests/unit/tools/test_switch_profile.py |
|---|
| webclient/CLAUDE.md |
|---|
| webclient/dist/assets/index-BvJF4tGW.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/assets/index-C-QKQYrg.css 100644 → 0 |
|---|
| webclient/dist/assets/index-DFVBxFCm.css 0 → 100644 |
|---|
| webclient/dist/assets/index-Df_9A-RF.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/components/ui/WelcomeScreen.vue |
|---|