feat: implement fuzzy search and replace functionality with Levenshtein distance

- Added `applySearchReplace` function to handle search and replace operations with fuzzy matching capabilities.
- Introduced tests for various scenarios including fuzzy matching with typos, exact matches, and handling whitespace differences.
- Created a parser for search/replace blocks to facilitate the new functionality.
- Updated prompts for search-replace operations to clarify usage and examples.
- Added utility functions for text normalization and language detection based on file extensions.
- Implemented a minimal stdio MCP server for local testing with tools for adding numbers and printing environment variables.
This commit is contained in:
Kunthawat Greethong
2025-12-05 11:28:57 +07:00
parent 11986a0196
commit d22227bb13
312 changed files with 30787 additions and 2829 deletions

View File

@@ -7,7 +7,7 @@ const config: PlaywrightTestConfig = {
testDir: "./e2e-tests",
workers: 1,
retries: process.env.CI ? 2 : 0,
timeout: process.env.CI ? 180_000 : 30_000,
timeout: process.env.CI ? 180_000 : 45_000,
// Use a custom snapshot path template because Playwright's default
// is platform-specific which isn't necessary for Dyad e2e tests
// which should be platform agnostic (we don't do screenshots; only textual diffs).
@@ -42,10 +42,12 @@ const config: PlaywrightTestConfig = {
// video: "retain-on-failure",
},
webServer: {
command: `cd testing/fake-llm-server && npm run build && npm start`,
url: "http://localhost:3500/health",
},
webServer: [
{
command: `cd testing/fake-llm-server && npm run build && npm start`,
url: "http://localhost:3500/health",
},
],
};
export default config;