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:
49
e2e-tests/turbo_edits_v2.spec.ts
Normal file
49
e2e-tests/turbo_edits_v2.spec.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { testSkipIfWindows } from "./helpers/test_helper";
|
||||
|
||||
testSkipIfWindows("turbo edits v2 - search-replace dump", async ({ po }) => {
|
||||
await po.setUpDyadPro();
|
||||
const proModesDialog = await po.openProModesDialog({
|
||||
location: "home-chat-input-container",
|
||||
});
|
||||
await proModesDialog.setTurboEditsMode("search-replace");
|
||||
await proModesDialog.close();
|
||||
await po.sendPrompt("[dump]");
|
||||
await po.snapshotServerDump("request");
|
||||
await po.snapshotServerDump("all-messages");
|
||||
});
|
||||
|
||||
testSkipIfWindows("turbo edits v2 - search-replace approve", async ({ po }) => {
|
||||
await po.setUpDyadPro();
|
||||
const proModesDialog = await po.openProModesDialog({
|
||||
location: "home-chat-input-container",
|
||||
});
|
||||
await proModesDialog.setTurboEditsMode("search-replace");
|
||||
await proModesDialog.close();
|
||||
await po.sendPrompt("tc=turbo-edits-v2");
|
||||
await po.snapshotMessages();
|
||||
await po.approveProposal();
|
||||
await po.snapshotAppFiles({
|
||||
name: "after-search-replace",
|
||||
files: ["src/pages/Index.tsx"],
|
||||
});
|
||||
});
|
||||
|
||||
testSkipIfWindows(
|
||||
"turbo edits v2 - search-replace fallback",
|
||||
async ({ po }) => {
|
||||
await po.setUpDyadPro();
|
||||
const proModesDialog = await po.openProModesDialog({
|
||||
location: "home-chat-input-container",
|
||||
});
|
||||
await proModesDialog.setTurboEditsMode("search-replace");
|
||||
await proModesDialog.close();
|
||||
await po.sendPrompt("tc=turbo-edits-v2-trigger-fallback");
|
||||
await po.snapshotServerDump("request");
|
||||
await po.snapshotMessages({ replaceDumpPath: true });
|
||||
await po.approveProposal();
|
||||
await po.snapshotAppFiles({
|
||||
name: "after-search-replace-fallback",
|
||||
files: ["src/pages/Index.tsx"],
|
||||
});
|
||||
},
|
||||
);
|
||||
Reference in New Issue
Block a user