chore(conductor): Add new track 'Tree-Sitter Lua MCP Tools'

This commit is contained in:
2026-03-10 00:18:12 -04:00
parent ee15d8f132
commit fe93cd347e
5 changed files with 75 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
# Track tree_sitter_lua_mcp_tools_20260310 Context
- [Specification](./spec.md)
- [Implementation Plan](./plan.md)
- [Metadata](./metadata.json)

View File

@@ -0,0 +1,8 @@
{
"track_id": "tree_sitter_lua_mcp_tools_20260310",
"type": "feature",
"status": "new",
"created_at": "2026-03-10T00:45:00Z",
"updated_at": "2026-03-10T00:45:00Z",
"description": "Add Tree-Sitter Lua MCP tools for structural parsing, documentation extraction, and surgical editing."
}

View File

@@ -0,0 +1,25 @@
# Implementation Plan: Tree-Sitter Lua MCP Tools
## Phase 1: Grammar Integration & Base Parser
- [ ] Task: Update project dependencies (e.g., `requirements.txt` or `pyproject.toml`) to include `tree-sitter-lua` or equivalent.
- [ ] Task: Write Tests: Verify the tree-sitter parser can successfully initialize the Lua language and parse a simple `local function test() end` string.
- [ ] Task: Implement: Create `src/lua_parser.py` (or extend existing AST parsers) to handle the base Lua tree-sitter initialization and generic node walking.
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Grammar Integration & Base Parser' (Protocol in workflow.md)
## Phase 2: Structural & Context Tools
- [ ] Task: Write Tests: Verify `lua_get_skeleton` and `lua_get_code_outline` against a complex Lua file containing nested functions, tables, and block comments.
- [ ] Task: Implement: Add `lua_get_skeleton` logic to extract signatures, table assignments (e.g., `Module.func = function()`), and replace bodies with `...`.
- [ ] Task: Implement: Add `lua_get_code_outline` and `lua_get_docstring` logic to traverse the AST and map line numbers and comments.
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Structural & Context Tools' (Protocol in workflow.md)
## Phase 3: Surgical Editing Tools
- [ ] Task: Write Tests: Verify `lua_get_definition` returns the exact source text of a targeted function, and `lua_update_definition` replaces it accurately within a larger file.
- [ ] Task: Implement: Add `lua_get_definition` logic using AST line/byte ranges.
- [ ] Task: Implement: Add `lua_update_definition` and `lua_set_signature` logic to perform string replacement based on strict AST node boundaries.
- [ ] Task: Conductor - User Manual Verification 'Phase 3: Surgical Editing Tools' (Protocol in workflow.md)
## Phase 4: MCP Client Integration & Polish
- [ ] Task: Write Tests: Verify the new tools are successfully registered and invokable via the `mcp_client.py` unified interface.
- [ ] Task: Implement: Register the new `lua_*` functions as official tools in `src/mcp_client.py`.
- [ ] Task: Implement: Ensure the caching layer (mtime invalidation) is correctly applied to the new Lua parsing operations.
- [ ] Task: Conductor - User Manual Verification 'Phase 4: MCP Client Integration & Polish' (Protocol in workflow.md)

View File

@@ -0,0 +1,32 @@
# Specification: Tree-Sitter Lua MCP Tools
## Overview
Expand the Conductor's AI context-gathering and surgical editing capabilities by introducing full Tree-Sitter parsing support for the Lua programming language. This will bring Lua to feature-parity with the existing Python MCP tools, enabling deep AST-driven structural mapping, documentation extraction, and precise code modification.
## Functional Requirements
- **Grammar Integration:**
- Introduce `tree-sitter-lua` (or a suitable native equivalent) to the project's parsing environment to generate deterministic Abstract Syntax Trees for Lua files.
- **Structural Parsing Tools:**
- **`lua_get_skeleton`:** Extract a high-level view of a Lua file, containing all table/module declarations and function signatures with their associated comments, replacing function bodies with `...`.
- **`lua_get_code_outline`:** Generate a hierarchical text outline showing line ranges for major structural elements (functions, loops, distinct blocks).
- **Documentation & Context Tools:**
- **`lua_get_docstring` (or comment block):** Extract the block comment immediately preceding a function or module definition.
- **`lua_find_usages`:** Locate usages of specific Lua symbols/functions across a file or directory using AST or strict regex boundaries.
- **Surgical Editing Tools:**
- **`lua_get_definition`:** Extract the full source code of a specific Lua function or table definition.
- **`lua_update_definition`:** Surgically replace the implementation of a specific Lua function without relying on generic search-and-replace strings.
- **`lua_set_signature`:** Update only the signature (parameters) of a Lua function.
## Non-Functional Requirements
- **Performance:** Parsing and skeleton generation should be heavily cached (using `mtime` invalidation) to ensure near-instantaneous responses, matching the current Python tool performance.
- **Robustness:** The parser must gracefully handle malformed Lua code, returning as much structural information as possible rather than failing entirely.
## Acceptance Criteria
- [ ] A new suite of Lua-specific tools (`lua_get_skeleton`, `lua_get_code_outline`, `lua_get_definition`, `lua_update_definition`) is available via the MCP Client.
- [ ] Automated tests verify that `lua_get_skeleton` correctly identifies local functions, global functions, and table-assigned methods.
- [ ] `lua_update_definition` can successfully replace a multi-line function body while maintaining the surrounding file structure and indentation.
- [ ] The `tree-sitter-lua` grammar is successfully integrated into the build/setup pipeline.
## Out of Scope
- Full language server protocol (LSP) features like deep type inference or cross-file variable renaming.
- Automated code formatting or linting for Lua (formatting relies on external ecosystem tools if needed).