Skip to content

feat(semantic): add symbol edit tools - #15

Merged
pocky merged 1 commit into
mainfrom
feature/F007-semantic-symbol-editing--refactor
Jun 25, 2026
Merged

feat(semantic): add symbol edit tools#15
pocky merged 1 commit into
mainfrom
feature/F007-semantic-symbol-editing--refactor

Conversation

@pocky

@pocky pocky commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add semantic symbol editing across MCP, AST, and LSP surfaces so callers can resolve symbols, preview edits, and apply rename/body/signature changes through structured contracts.
  • Introduce batch workspace edit application with CAS/base-hash validation to keep multi-file edits atomic and conflict-aware.
  • Extend extension protocol, host dependencies, and daemon wiring so sidecar extensions can request workspace reads, apply edits, and expose semantic edit tools.
  • Document the new semantic edit workflows and update tests across protocol, domain, extension, and functional MCP coverage.

Changes

Workspace Metadata

  • .zpm/kb/architecture/journal.wal: Record architecture knowledge discovered during semantic edit implementation.
  • .zpm/kb/feedback/journal.wal: Record feedback rules and implementation lessons from the semantic edit work.
  • Cargo.lock: Update dependency lockfile for workspace changes.

Core Engine

  • crates/core_engine/src/adapters/daemon/engine.rs: Wire semantic edit capabilities through the daemon/MCP engine.
  • crates/core_engine/src/adapters/extension/host_deps.rs: Extend sidecar host dependencies with workspace edit/read support.
  • crates/core_engine/src/adapters/extension/sidecar.rs: Add host-call plumbing for semantic edit operations.
  • crates/core_engine/src/adapters/extension/tests.rs: Cover extension host dependency and sidecar behavior for the new edit flows.
  • crates/core_engine/src/adapters/in_memory_code_intel.rs: Update in-memory code intelligence support for semantic navigation/edit tests.
  • crates/core_engine/src/domain/grep/mod.rs: Adjust grep/domain integration used by indexed symbol workflows.
  • crates/core_engine/src/domain/mutation/file_mutation.rs: Add batch workspace apply-edits behavior with validation and structured results.
  • crates/core_engine/src/ports/inbound.rs: Extend inbound use-case contracts for semantic edit operations.
  • crates/core_engine/src/ports/mod.rs: Export updated port modules.
  • crates/core_engine/src/ports/navigation.rs: Add navigation/edit contract types for implementation and rename flows.
  • crates/core_engine/src/test_support/mod.rs: Add shared fixtures and helpers for semantic edit testing.

Core Engine Tests

  • crates/core_engine/src/domain/mutation/apply_edits_tests.rs: Add contract coverage for batch edit application, conflicts, and validation.
  • crates/core_engine/tests/extension_ast_e2e.rs: Add AST sidecar end-to-end coverage for anchored symbol edits.
  • crates/core_engine/tests/extension_lint_e2e.rs: Update lint extension test support after protocol/host dependency changes.
  • crates/core_engine/tests/extension_lsp_process_e2e.rs: Cover LSP sidecar process behavior for semantic navigation/edit handlers.
  • crates/core_engine/tests/extension_lsp_protocol_e2e.rs: Cover LSP protocol responses for implementation and rename operations.
  • crates/core_engine/tests/functional_semantic_edit_mcp.rs: Add functional MCP tests for semantic edit tool responses.
  • crates/core_engine/tests/lint_support.rs: Update shared lint test fixtures for extension protocol changes.

Extension Protocol

  • crates/extension_protocol/src/lib.rs: Export semantic edit protocol types.
  • crates/extension_protocol/src/messages.rs: Add JSON-RPC message contracts for workspace edits, implementation lookup, prepare rename, and rename.
  • crates/extension_protocol/tests/semantic_edit_contracts.rs: Add protocol contract tests for semantic edit serialization and error payloads.

AST Extension

  • extensions/ast/Cargo.toml: Update AST extension dependencies for anchored edit support.
  • extensions/ast/extension.toml: Declare AST semantic edit tools and capabilities.
  • extensions/ast/src/index.rs: Update symbol indexing support used by edit resolution.
  • extensions/ast/src/main.rs: Register anchored symbol edit handlers.
  • extensions/ast/src/outline.rs: Extend outline parsing for edit anchor resolution.
  • extensions/ast/src/protocol.rs: Add AST extension request/response types for semantic edit tools.
  • extensions/ast/src/symbols.rs: Resolve symbol spans from current file content for safe anchored edits.
  • extensions/ast/src/tools.rs: Implement AST semantic edit tools, dry-run previews, content hashes, and structured errors.

LSP Extension

  • extensions/lsp/Cargo.toml: Update LSP extension dependencies for workspace edit decoding and semantic navigation.
  • extensions/lsp/extension.toml: Declare LSP implementation and rename tools.
  • extensions/lsp/src/lsp_adapter/decode.rs: Decode LSP workspace edits, including versioned document changes, into core edit operations.
  • extensions/lsp/src/lsp_adapter/mod.rs: Add adapter operations for implementation lookup, prepare rename, and rename.
  • extensions/lsp/src/lsp_adapter/pool.rs: Extend session pool routing for new LSP operations.
  • extensions/lsp/src/lsp_adapter/position_map.rs: Convert UTF-16 LSP ranges to byte ranges for workspace edits.
  • extensions/lsp/src/main.rs: Register LSP semantic edit and navigation handlers.
  • extensions/lsp/src/protocol.rs: Add request/response protocol types for implementation and rename tools.
  • extensions/lsp/src/session.rs: Add session-level handling for implementation and rename requests.
  • extensions/lsp/src/tools.rs: Implement MCP-facing LSP tools for implementation lookup, prepare rename, and rename.

Documentation

  • README.md: Update project feature overview with semantic edit support.
  • docs/README.md: Link semantic edit documentation from the docs index.
  • docs/architecture.md: Document architecture changes for semantic edit routing across ports and extensions.
  • docs/extensions.md: Document extension capabilities and host-call expectations for semantic edits.
  • docs/mcp-tools.md: Document MCP tool surface changes for AST/LSP semantic edit workflows.
  • docs/user-guide/semantic-edits.md: Add user guide for semantic symbol editing workflows.

Test plan

  • Run formatting: cargo fmt --check
  • Run linting: cargo clippy --workspace --all-targets -- -D warnings
  • Build sidecar binaries: cargo build --workspace --bins
  • Run full test suite: cargo test --workspace

Closes #14


Generated with awf commit workflow

- `.zpm/kb/architecture/journal.wal`: Record architecture memory for semantic editing work
- `.zpm/kb/feedback/journal.wal`: Record feedback rules for semantic edit edge cases
- `Cargo.lock`: Add semantic edit dependency updates
- `README.md`: Document semantic editing capabilities
- `crates/core_engine/src/adapters/daemon/engine.rs`: Register semantic edit MCP routing
- `crates/core_engine/src/adapters/extension/host_deps.rs`: Extend host dependencies for workspace edits
- `crates/core_engine/src/adapters/extension/sidecar.rs`: Add sidecar support for semantic edit host calls
- `crates/core_engine/src/adapters/extension/tests.rs`: Cover sidecar semantic edit behavior
- `crates/core_engine/src/adapters/in_memory_code_intel.rs`: Add in-memory code intelligence edit support
- `crates/core_engine/src/domain/grep/mod.rs`: Adjust grep integration for edit workflows
- `crates/core_engine/src/domain/mutation/apply_edits_tests.rs`: Add batch apply-edit contract tests
- `crates/core_engine/src/domain/mutation/file_mutation.rs`: Implement batch apply-edits with hash validation
- `crates/core_engine/src/ports/inbound.rs`: Add inbound semantic edit use cases
- `crates/core_engine/src/ports/mod.rs`: Export semantic edit port types
- `crates/core_engine/src/ports/navigation.rs`: Extend navigation ports for rename operations
- `crates/core_engine/src/test_support/mod.rs`: Add semantic edit test helpers
- `crates/core_engine/tests/extension_ast_e2e.rs`: Cover AST anchored edit flows
- `crates/core_engine/tests/extension_lint_e2e.rs`: Update lint extension test support
- `crates/core_engine/tests/extension_lsp_process_e2e.rs`: Cover LSP rename process behavior
- `crates/core_engine/tests/extension_lsp_protocol_e2e.rs`: Cover LSP semantic edit protocol behavior
- `crates/core_engine/tests/functional_semantic_edit_mcp.rs`: Add functional MCP semantic edit tests
- `crates/core_engine/tests/lint_support.rs`: Update shared extension test harness
- `crates/extension_protocol/src/lib.rs`: Export semantic edit protocol contracts
- `crates/extension_protocol/src/messages.rs`: Add semantic edit message types
- `crates/extension_protocol/tests/semantic_edit_contracts.rs`: Add protocol contract tests
- `docs/README.md`: Link semantic edit documentation
- `docs/architecture.md`: Document semantic edit architecture
- `docs/extensions.md`: Document extension semantic edit capabilities
- `docs/mcp-tools.md`: Document semantic edit MCP tools
- `docs/user-guide/semantic-edits.md`: Add semantic editing user guide
- `extensions/ast/Cargo.toml`: Add AST edit hashing dependency
- `extensions/ast/extension.toml`: Declare AST semantic edit tools
- `extensions/ast/src/index.rs`: Expose indexed symbols for edit validation
- `extensions/ast/src/main.rs`: Wire AST semantic edit handlers
- `extensions/ast/src/outline.rs`: Add symbol span extraction helpers
- `extensions/ast/src/protocol.rs`: Add AST edit protocol types
- `extensions/ast/src/symbols.rs`: Improve symbol resolution for edits
- `extensions/ast/src/tools.rs`: Implement AST anchored symbol edit tools
- `extensions/lsp/Cargo.toml`: Add LSP workspace edit dependency
- `extensions/lsp/extension.toml`: Declare LSP rename tools
- `extensions/lsp/src/lsp_adapter/decode.rs`: Decode LSP workspace edits into batch edits
- `extensions/lsp/src/lsp_adapter/mod.rs`: Implement LSP implementation and rename calls
- `extensions/lsp/src/lsp_adapter/pool.rs`: Add session pool support for rename calls
- `extensions/lsp/src/lsp_adapter/position_map.rs`: Convert UTF-16 LSP ranges to byte ranges
- `extensions/lsp/src/main.rs`: Wire LSP semantic edit handlers
- `extensions/lsp/src/protocol.rs`: Add LSP semantic edit protocol types
- `extensions/lsp/src/session.rs`: Queue host calls during LSP session work
- `extensions/lsp/src/tools.rs`: Implement LSP implementations and rename tools

Closes #14
@pocky
pocky marked this pull request as ready for review June 25, 2026 17:59
@pocky
pocky merged commit cf42000 into main Jun 25, 2026
2 checks passed
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.

F007: Semantic Symbol Editing & Refactor

1 participant