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,25 @@
import { testWithConfigSkipIfWindows } from "./helpers/test_helper";
// Set environment variables before the test runs to enable Azure testing
const testAzure = testWithConfigSkipIfWindows({
preLaunchHook: async () => {
process.env.TEST_AZURE_BASE_URL = "http://localhost:3500/azure";
process.env.AZURE_API_KEY = "fake-azure-key-for-testing";
process.env.AZURE_RESOURCE_NAME = "fake-resource-for-testing";
},
});
testAzure("send message through Azure OpenAI", async ({ po }) => {
// Set up Azure without test provider
await po.setUpAzure();
// Select Azure model
await po.selectTestAzureModel();
// Send a test prompt that returns a normal conversational response
await po.sendPrompt("tc=basic");
// Verify we get a response (this means Azure integration is working)
await po.snapshotMessages();
});