fix: git import issue when importing bolt on bolt (#1020)

* fix: import bolt on bolt fix

* added escape on folder import

* type fix
This commit is contained in:
Anirban Kar
2025-01-27 18:05:55 +05:30
committed by GitHub
parent 6d4196a2b4
commit bbae032a37
5 changed files with 49 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
import type { Message } from 'ai';
import { generateId } from './fileUtils';
import { detectProjectCommands, createCommandsMessage } from './projectCommands';
import { detectProjectCommands, createCommandsMessage, escapeBoltTags } from './projectCommands';
export const createChatFromFolder = async (
files: File[],
@@ -42,7 +42,7 @@ export const createChatFromFolder = async (
${fileArtifacts
.map(
(file) => `<boltAction type="file" filePath="${file.path}">
${file.content}
${escapeBoltTags(file.content)}
</boltAction>`,
)
.join('\n\n')}

View File

@@ -78,3 +78,39 @@ ${commands.setupCommand}
createdAt: new Date(),
};
}
export function escapeBoltArtifactTags(input: string) {
// Regular expression to match boltArtifact tags and their content
const regex = /(<boltArtifact[^>]*>)([\s\S]*?)(<\/boltArtifact>)/g;
return input.replace(regex, (match, openTag, content, closeTag) => {
// Escape the opening tag
const escapedOpenTag = openTag.replace(/</g, '&lt;').replace(/>/g, '&gt;');
// Escape the closing tag
const escapedCloseTag = closeTag.replace(/</g, '&lt;').replace(/>/g, '&gt;');
// Return the escaped version
return `${escapedOpenTag}${content}${escapedCloseTag}`;
});
}
export function escapeBoltAActionTags(input: string) {
// Regular expression to match boltArtifact tags and their content
const regex = /(<boltAction[^>]*>)([\s\S]*?)(<\/boltAction>)/g;
return input.replace(regex, (match, openTag, content, closeTag) => {
// Escape the opening tag
const escapedOpenTag = openTag.replace(/</g, '&lt;').replace(/>/g, '&gt;');
// Escape the closing tag
const escapedCloseTag = closeTag.replace(/</g, '&lt;').replace(/>/g, '&gt;');
// Return the escaped version
return `${escapedOpenTag}${content}${escapedCloseTag}`;
});
}
export function escapeBoltTags(input: string) {
return escapeBoltArtifactTags(escapeBoltAActionTags(input));
}