Pass per-call working_dir through platform developer read/write/edit/shell tools so relative paths and shell commands execute from the session directory.
Remove runtime builtin-to-platform developer normalization and centralize legacy normalization in config/session migration paths.
Drop scattered developer__ tool-name handling in ACP, scanner, CLI export/output, and web session UI, and update ACP codemode fixtures/tests to flat Developer.write behavior.
Move developer to an unprefixed platform extension and expose flat tool names: read, write, edit, shell.
- add a new in-process developer platform client backed by existing read/edit/shell implementations
- register developer as a first-class unprefixed platform extension
- normalize legacy builtin developer configs to platform configs at extension load time
- update CLI/ACP/UI/scanner compatibility paths to handle flat names and legacy developer__ names
- update setup defaults to enable developer as a platform extension and refresh code-execution examples
Address developer MCP usability issues across read, shell, and file_edit.
- read: detect binary files and return a clear error instead of lossy text
- read: return 'File is empty.' for empty text files
- read: make offset behavior/documentation explicitly 0-indexed
- shell: keep 2000-line/50KB hard limit but show only tail 50 lines when truncated
- shell: make truncation messaging explicit about omitted earlier output and temp-file path
- file_edit: include file preview in no-match errors to improve debugging context
- update developer tool descriptions and add/adjust unit tests for the new behavior
Replace the original developer extension with the new simplified toolset\nunder the existing 'developer' name so existing configs keep working.\n\n- remove standalone develop module registration and export\n- route builtin/CLI/server MCP handling to the new DeveloperServer\n- keep 'develop' as a CLI MCP command alias to 'developer'\n- delete legacy developer analyze/text_editor/editor_model implementation
Collapse the develop MCP tool implementation from nested submodules into a flat file set under crates/goose-mcp/src/develop.
Move edit/read/shell/tree implementations to top-level files and update server imports accordingly.
Port the experimental develop implementation and simplify it for maintainability.
- register a new develop MCP server in goose-mcp, goose-cli, and goose-server
- replace map with tree and use gitignore-aware traversal via ignore::WalkBuilder
- add a unified read tool for text and images with offset/limit support
- simplify shell execution with pi-mono-style tail truncation defaults (2000 lines/50KB)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Katz <dkatz@squareup.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>