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

@@ -0,0 +1,24 @@
import { test } from "./helpers/test_helper";
test("can edit custom provider", async ({ po }) => {
await po.setUp();
await po.goToSettingsTab();
// Create a provider first
// Edit it
await po.page.getByTestId("edit-custom-provider").click();
await po.page.getByRole("textbox", { name: "Display Name" }).clear();
await po.page
.getByRole("textbox", { name: "Display Name" })
.fill("Updated Test Provider");
await po.page.getByRole("textbox", { name: "API Base URL" }).clear();
await po.page
.getByRole("textbox", { name: "API Base URL" })
.fill("https://api.updated-test.com/v1");
await po.page.getByRole("button", { name: "Update Provider" }).click();
// Make sure UI hasn't freezed
});