diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 2d8d4ce..8ed5c79 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1055,6 +1055,11 @@ async function sendAiChat() { content.value = content.value.trimEnd() + '\n\n' + editContent } else if (hint === 'PREPEND') { content.value = editContent + '\n\n' + content.value + } else if (hint === 'CURSOR' || hint === 'INSERT') { + // Insert at cursor position + const ta = editor.value + const pos = ta ? ta.selectionStart : content.value.length + content.value = content.value.substring(0, pos) + editContent + content.value.substring(pos) } else { // REPLACE or unknown — replace entire document content.value = hint === 'REPLACE' ? editContent : fullText diff --git a/internal/api/ai.go b/internal/api/ai.go index c695c76..56828de 100644 --- a/internal/api/ai.go +++ b/internal/api/ai.go @@ -158,11 +158,11 @@ func (s *Server) handleAIChat(w http.ResponseWriter, r *http.Request) { var systemPrompt, userMsg string if req.Mode == "edit" { systemPrompt = "You are a document editor. The user will give you a markdown document and an instruction. " + - "Return ONLY the new or changed text that should be inserted/replaced. " + - "Do not return the entire document. Do not add explanations or wrap in code fences. " + - "If adding content, return only the addition. If modifying, return only the modified section. " + - "Start your response with a location hint on the first line: APPEND (add to end), PREPEND (add to start), or REPLACE (replace entire document). " + - "Then the content on the next line." + "Return ONLY the new or changed text. Do not return the entire document unless asked to rewrite it. " + + "Do not add explanations or wrap in code fences. " + + "Start your response with a location hint on the first line: " + + "APPEND (add to end), PREPEND (add to start), CURSOR (insert at cursor position), or REPLACE (replace entire document). " + + "Then the content on the next line. Use CURSOR when the user says 'here' or the instruction implies inserting at a specific point." userMsg = "Document:\n\n" + req.Content + "\n\nInstruction: " + req.Message } else { systemPrompt = "You are a helpful writing assistant. The user has a markdown document open. Answer concisely in markdown."