feat(debug): add interactive sessions - #9
Merged
Conversation
- `.gitignore`: Ignore tower runtime and debug artifacts - `.zpm/kb/feedback/journal.wal`: Record project feedback memory updates - `Cargo.lock`: Add debug extension and sidecar harness dependencies - `Cargo.toml`: Register debug and harness workspace crates - `README.md`: Document debug session capability - `crates/core_engine/Cargo.toml`: Add dependencies for debug extension integration tests - `crates/core_engine/src/adapters/config/debug.rs`: Add debug adapter configuration parsing - `crates/core_engine/src/adapters/config/mod.rs`: Wire debug configuration into project config - `crates/core_engine/src/adapters/daemon/engine.rs`: Pass debug config into extension loading - `crates/core_engine/src/adapters/extension/discovery.rs`: Discover debug extension manifests - `crates/core_engine/src/adapters/extension/host_deps.rs`: Expose debug host dependencies - `crates/core_engine/src/adapters/extension/mod.rs`: Export debug extension adapter wiring - `crates/core_engine/src/adapters/extension/sidecar.rs`: Support sidecar initialization config - `crates/core_engine/src/adapters/extension/supervisor.rs`: Pass config payloads to sidecar supervisors - `crates/core_engine/src/adapters/extension/supervisor_tests.rs`: Cover supervisor config initialization - `crates/core_engine/src/adapters/extension/tests.rs`: Update extension discovery and config tests - `crates/core_engine/src/adapters/mcp/extension_merged_registry.rs`: Merge debug tools into MCP registry - `crates/core_engine/tests/extension_ast_e2e.rs`: Update extension e2e harness usage - `crates/core_engine/tests/extension_debug_e2e.rs`: Add debug extension lifecycle e2e coverage - `crates/core_engine/tests/extension_fmt_e2e.rs`: Update format extension e2e wiring - `crates/core_engine/tests/extension_lint_e2e.rs`: Update lint extension e2e wiring - `crates/core_engine/tests/extension_lsp_process_e2e.rs`: Update LSP process e2e wiring - `crates/core_engine/tests/functional_lint_fix_mcp.rs`: Update functional lint fix integration wiring - `crates/core_engine/tests/functional_lint_mcp.rs`: Update functional lint integration wiring - `crates/extension_protocol/src/lib.rs`: Export extension initialization config types - `crates/extension_protocol/src/messages.rs`: Add initialization config payloads to protocol messages - `crates/extension_protocol/tests/protocol_tests.rs`: Cover protocol config serialization contracts - `crates/extension_sidecar_harness/Cargo.toml`: Add shared sidecar harness crate manifest - `crates/extension_sidecar_harness/src/jsonrpc.rs`: Add JSON-RPC framing helpers - `crates/extension_sidecar_harness/src/lib.rs`: Add queued sidecar protocol harness - `docs/README.md`: Link debug session documentation - `docs/architecture.md`: Document debug sidecar architecture - `docs/extensions.md`: Document debug extension behavior - `docs/mcp-tools.md`: Document debug MCP tools - `docs/user-guide/debug-sessions.md`: Add debug sessions user guide - `extensions/debug/Cargo.toml`: Add debug extension crate manifest - `extensions/debug/extension.toml`: Add debug extension manifest - `extensions/debug/src/dap.rs`: Implement Debug Adapter Protocol client - `extensions/debug/src/main.rs`: Add debug extension sidecar entrypoint - `extensions/debug/src/process.rs`: Manage debug adapter child processes - `extensions/debug/src/protocol.rs`: Implement debug sidecar protocol handling - `extensions/debug/src/session.rs`: Add debug session lifecycle manager - `extensions/debug/src/tools.rs`: Add debug MCP tool handlers - `extensions/debug/src/types.rs`: Add debug protocol DTOs - `extensions/fixtures/debug_adapter/Cargo.toml`: Add fixture debug adapter crate - `extensions/fixtures/debug_adapter/src/main.rs`: Add deterministic debug adapter fixture - `extensions/lint/Cargo.toml`: Depend on shared sidecar harness - `extensions/lint/src/lib.rs`: Update lint extension exports - `extensions/lint/src/main.rs`: Migrate lint sidecar to shared harness - `extensions/lint/src/protocol.rs`: Remove duplicated sidecar loop code - `extensions/lint/tests/protocol_tests.rs`: Update lint protocol harness tests - `extensions/lsp/Cargo.toml`: Depend on shared sidecar harness - `extensions/lsp/src/main.rs`: Migrate LSP sidecar to shared harness - `extensions/lsp/src/protocol.rs`: Remove duplicated protocol loop code - `extensions/lsp/src/push.rs`: Queue host frames during LSP host calls - `extensions/lsp/src/tools.rs`: Preserve LSP tool error mapping Closes #8
pocky
force-pushed
the
feature/F004-interactive-debug-session-sidecar
branch
from
June 24, 2026 10:32
9acf072 to
1e84576
Compare
pocky
marked this pull request as ready for review
June 24, 2026 10:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
debugsidecar extension backed by Debug Adapter Protocol sessions.[debug.<language>]configuration and pass per-extension initialization payloads into sidecars.Changes
Workspace and Build
.gitignore: Keep the repository-leveldebug/ignore while allowingextensions/debug/to be tracked.Cargo.toml: Addextension_sidecar_harness,extensions/debug, andextensions/fixtures/debug_adapterto workspace members and default members.Cargo.lock: Lock new debug extension, debug adapter fixture, and sidecar harness packages.crates/core_engine/Cargo.toml: Addextension_sidecar_harnessas a dev dependency for protocol and e2e tests.extensions/lint/Cargo.toml: Add dependency on the shared sidecar harness.extensions/lsp/Cargo.toml: Add dependency on the shared sidecar harness.Debug Configuration and Registration
crates/core_engine/src/adapters/config/debug.rs: Add validated debug language configuration parsing, initialization payload generation, and config unit tests.crates/core_engine/src/adapters/config/mod.rs: ExposeDebugConfigand include[debug]inTowerConfig.crates/core_engine/src/adapters/daemon/engine.rs: Pass extension init configs, register the bundled debug extension when debug config is present, and resolve the debug sidecar binary.crates/core_engine/src/adapters/extension/discovery.rs: Add extension init config mapping and thread it through extension discovery.crates/core_engine/src/adapters/extension/host_deps.rs: Extend host dependencies needed by the debug extension path.crates/core_engine/src/adapters/extension/mod.rs: Re-export extension initialization configuration support.crates/core_engine/src/adapters/extension/sidecar.rs: Send extension-specific initialize payloads and tighten sidecar cleanup behavior.crates/core_engine/src/adapters/extension/supervisor.rs: Store and forward initialize config into supervised sidecar processes.crates/core_engine/src/adapters/mcp/extension_merged_registry.rs: Preserve extension-provided debug tools in the merged MCP registry.Debug Extension
extensions/debug/Cargo.toml: Add the native debug sidecar crate.extensions/debug/extension.toml: Define debug extension metadata, activation, and contributedtower_debug_*tools.extensions/debug/src/dap.rs: Implement DAP framing, request/response correlation, events, timeout handling, and adapter communication.extensions/debug/src/main.rs: Add the debug sidecar entrypoint, initialization flow, tool dispatch, and sidecar harness integration.extensions/debug/src/process.rs: Manage debug adapter child process startup, shutdown, and cleanup.extensions/debug/src/protocol.rs: Define sidecar protocol helpers and initialization config parsing for debug sessions.extensions/debug/src/session.rs: Add session lifecycle management, breakpoints, stepping, pause/resume, variable inspection, and cleanup.extensions/debug/src/tools.rs: Implement debug MCP tool request parsing, validation, dispatch, and JSON-RPC error mapping.extensions/debug/src/types.rs: Define debug session, breakpoint, stack frame, scope, variable, stop, and output DTOs.Shared Sidecar Harness
crates/extension_sidecar_harness/Cargo.toml: Add the shared harness crate manifest.crates/extension_sidecar_harness/src/jsonrpc.rs: Add JSON-RPC envelope parsing, response writing, HostCall handling, and queued inbound-frame support.crates/extension_sidecar_harness/src/lib.rs: Expose shared sidecar JSON-RPC helpers.crates/extension_protocol/src/lib.rs: Export updated protocol initialization types.crates/extension_protocol/src/messages.rs: Add extension initialization config payload support.crates/extension_protocol/tests/protocol_tests.rs: Cover initialize config serialization and validation contracts.Lint and LSP Harness Migration
extensions/lint/src/lib.rs: Expose lint protocol components required by the harness migration.extensions/lint/src/main.rs: Move lint sidecar dispatch onto the shared harness.extensions/lint/src/protocol.rs: Replace local protocol loop behavior with shared harness-compatible helpers.extensions/lint/tests/protocol_tests.rs: Update lint protocol tests for the harness-backed behavior.extensions/lsp/src/main.rs: Move LSP sidecar dispatch onto the shared harness.extensions/lsp/src/protocol.rs: Replace local protocol loop behavior with shared harness-compatible helpers and queued-frame handling.extensions/lsp/src/push.rs: Adjust push forwarding for the shared protocol loop.extensions/lsp/src/tools.rs: Update LSP tool dispatch and error handling for harness integration.Tests and Fixtures
crates/core_engine/src/adapters/extension/supervisor_tests.rs: Update supervisor tests for initialize config and cleanup behavior.crates/core_engine/src/adapters/extension/tests.rs: Add discovery, initialization payload, disabled extension, and sidecar registration coverage.crates/core_engine/tests/extension_ast_e2e.rs: Update AST extension e2e setup for the shared extension loading path.crates/core_engine/tests/extension_debug_e2e.rs: Add debug extension e2e coverage for registration, launch, stack, scopes, variables, breakpoints, continue, output, and termination.crates/core_engine/tests/extension_fmt_e2e.rs: Update format extension e2e setup for the shared extension loading path.crates/core_engine/tests/extension_lint_e2e.rs: Update lint e2e coverage for harness-backed sidecar behavior.crates/core_engine/tests/extension_lsp_process_e2e.rs: Add LSP process and queued-frame regression coverage.crates/core_engine/tests/functional_lint_fix_mcp.rs: Update functional lint fix setup for extension registry changes.crates/core_engine/tests/functional_lint_mcp.rs: Update functional lint setup for extension registry changes.extensions/fixtures/debug_adapter/Cargo.toml: Add deterministic debug adapter fixture crate.extensions/fixtures/debug_adapter/src/main.rs: Implement a fixture DAP adapter for repeatable debug extension e2e tests.Documentation and Project Knowledge
README.md: Add interactive debugging to the feature list, crate layout, and documentation index.docs/README.md: Link debug session user documentation.docs/architecture.md: Document the debug extension and sidecar harness additions in the architecture overview.docs/extensions.md: Update extension authoring guidance for initialization config and shared sidecar harness behavior.docs/mcp-tools.md: Document thetower_debug_*MCP tools, request shapes, responses, and errors.docs/user-guide/debug-sessions.md: Add a user guide for configuring and driving interactive debug sessions..zpm/kb/feedback/journal.wal: Record reusable project rules learned during F004 implementation and review remediation.Test plan
cargo fmt --checkcargo clippy --workspace --all-targets -- -D warningscargo build --workspace --binscargo test --workspaceCloses #8
Generated with awf commit workflow