and before the
# canvas toggle div)
# ============================================================
old_toolbar = '''
'''
new_toolbar = '''
'''
if old_toolbar in content:
content = content.replace(old_toolbar, new_toolbar, 1)
changes += 1
print("Change 6: Added web search toggle button")
else:
print("WARNING: Could not find toolbar insertion point")
# ============================================================
# CHANGE 7: Add web search enrichment in handleSendMessage
# Before generateAIAssistStream call, after formattedHistory
# ============================================================
old_stream = ''' const response = await modelAdapter.generateAIAssistStream(
{
messages: [...formattedHistory, { role: "user" as const, content: finalInput, timestamp: new Date() }],'''
new_stream = ''' // Web search grounding: enrich prompt with search results if enabled
let enrichedInput = finalInput;
if (webSearchEnabled) {
setStatus("Searching the web...");
try {
const searchRes = await fetch("/api/search?q=" + encodeURIComponent(finalInput.split("\\n")[0].substring(0, 200)));
if (searchRes.ok) {
const searchData = await searchRes.json();
if (searchData.results && searchData.results.length > 0) {
const searchContext = searchData.results.slice(0, 5).map((r: { title: string; url: string; snippet: string }, i: number) =>
`${i + 1}. **${r.title}** (${r.url}) - ${r.snippet}`
).join("\\n");
enrichedInput = `[WEB SEARCH CONTEXT - Top 5 relevant results]\\n${searchContext}\\n\\n---\\nUsing the above search results as reference context, answer the user query. Cite sources when relevant.\\n\\nUser query: ${finalInput}`;
}
}
} catch (e) {
console.warn("Web search failed:", e);
}
setStatus(null);
}
const response = await modelAdapter.generateAIAssistStream(
{
messages: [...formattedHistory, { role: "user" as const, content: enrichedInput, timestamp: new Date() }],'''
if old_stream in content:
content = content.replace(old_stream, new_stream, 1)
changes += 1
print("Change 7: Added web search enrichment before AI call")
else:
print("WARNING: Could not find generateAIAssistStream call")
with open(fp, 'w') as f:
f.write(content)
print(f"\nApplied {changes}/7 changes to AIAssist.tsx")