Add step 619 per-project MCP config

This commit is contained in:
Bill
2026-02-17 20:51:33 -07:00
parent 49e6206146
commit 010507af44
5 changed files with 347 additions and 6 deletions

View File

@@ -12216,3 +12216,39 @@ readiness tool.
- `editor/src/Sprint36aIntegration.h` within header-size limit (`71` <= `600`)
- `editor/tests/step618_test.cpp` within test-file size guidance (`121` lines)
- Header-only architecture and naming conventions remain aligned with `ARCHITECTURE.md`
### Step 619: `.whetstone.json` per-project config schema
**Status:** PASS (12/12 tests)
Introduces per-project MCP config parsing/loading for:
`workspace`, `defaultLanguage`, `agentRole`, and `mcpWorkspaceAlias`.
`whetstone_mcp` now reads `.whetstone.json` from the `--workspace` directory
at startup when present.
**Files added:**
- `editor/src/MCPProjectConfig.h` - project config schema and loader:
- JSON text/object parsing with field type validation
- workspace-root file loading from `.whetstone.json`
- `editor/tests/step619_test.cpp` - 12 tests covering:
- schema parse success/failure paths
- invalid field type handling
- workspace file discovery/load/error behavior
**Files modified:**
- `editor/src/mcp_main.cpp` - startup config integration:
- loads `.whetstone.json` for provided `--workspace`
- applies configured workspace/language/agent role defaults
- reports workspace alias in startup logs when provided
- `editor/CMakeLists.txt` - `step619_test` target
**Verification run:**
- `cmake -S editor -B editor/build-native` - PASS
- `cmake --build editor/build-native --target step619_test step618_test` - PASS
- `./editor/build-native/step619_test` - PASS (12/12)
- `./editor/build-native/step618_test` - PASS (8/8) regression coverage
**Architecture gate check:**
- `editor/src/MCPProjectConfig.h` within header-size limit (`102` <= `600`)
- `editor/src/mcp_main.cpp` within main-size limit (`177` <= `1500`)
- `editor/tests/step619_test.cpp` within test-file size guidance (`169` lines)
- Header-only architecture and naming conventions remain aligned with `ARCHITECTURE.md`