cfc78e0493
Add a retrieval_mode field ("semantic" or "text") to the output of all
five query-driven tools so callers can distinguish vector search from
Postgres full-text fallback without inspecting server logs.
Tools updated: search_thoughts, recall_context, get_project_context,
summarize_thoughts, and related_thoughts (semantic neighbours only;
omitempty so field is absent when include_semantic is false or no query
is provided for the non-mandatory-query tools).
The shared semanticSearch helper now returns the mode as a third return
value. All callers updated; fixes two compile errors left by the
previous worker (summarize.go and links.go were not capturing the new
return).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
61 lines
2.4 KiB
Go
61 lines
2.4 KiB
Go
package tools
|
|
|
|
import "testing"
|
|
|
|
func TestRetrievalModeConstants(t *testing.T) {
|
|
if RetrievalModeSemantic != "semantic" {
|
|
t.Fatalf("RetrievalModeSemantic = %q, want %q", RetrievalModeSemantic, "semantic")
|
|
}
|
|
if RetrievalModeText != "text" {
|
|
t.Fatalf("RetrievalModeText = %q, want %q", RetrievalModeText, "text")
|
|
}
|
|
}
|
|
|
|
func TestSearchOutputIncludesRetrievalMode(t *testing.T) {
|
|
out := SearchOutput{RetrievalMode: RetrievalModeSemantic}
|
|
if out.RetrievalMode != RetrievalModeSemantic {
|
|
t.Fatalf("SearchOutput.RetrievalMode = %q, want %q", out.RetrievalMode, RetrievalModeSemantic)
|
|
}
|
|
}
|
|
|
|
func TestRelatedOutputIncludesRetrievalMode(t *testing.T) {
|
|
out := RelatedOutput{RetrievalMode: RetrievalModeText}
|
|
if out.RetrievalMode != RetrievalModeText {
|
|
t.Fatalf("RelatedOutput.RetrievalMode = %q, want %q", out.RetrievalMode, RetrievalModeText)
|
|
}
|
|
// retrieval_mode is omitempty — empty string means semantic search was skipped
|
|
out2 := RelatedOutput{}
|
|
if out2.RetrievalMode != "" {
|
|
t.Fatalf("RelatedOutput.RetrievalMode = %q, want empty when include_semantic is false", out2.RetrievalMode)
|
|
}
|
|
}
|
|
|
|
func TestSummarizeOutputIncludesRetrievalModeOnlyWhenQueryUsed(t *testing.T) {
|
|
withQuery := SummarizeOutput{Summary: "s", Count: 1, RetrievalMode: RetrievalModeSemantic}
|
|
if withQuery.RetrievalMode != RetrievalModeSemantic {
|
|
t.Fatalf("SummarizeOutput.RetrievalMode = %q, want %q", withQuery.RetrievalMode, RetrievalModeSemantic)
|
|
}
|
|
withoutQuery := SummarizeOutput{Summary: "s", Count: 1}
|
|
if withoutQuery.RetrievalMode != "" {
|
|
t.Fatalf("SummarizeOutput.RetrievalMode = %q, want empty when no query", withoutQuery.RetrievalMode)
|
|
}
|
|
}
|
|
|
|
func TestProjectContextOutputIncludesRetrievalModeOnlyWhenQueryUsed(t *testing.T) {
|
|
withQuery := ProjectContextOutput{RetrievalMode: RetrievalModeText}
|
|
if withQuery.RetrievalMode != RetrievalModeText {
|
|
t.Fatalf("ProjectContextOutput.RetrievalMode = %q, want %q", withQuery.RetrievalMode, RetrievalModeText)
|
|
}
|
|
withoutQuery := ProjectContextOutput{}
|
|
if withoutQuery.RetrievalMode != "" {
|
|
t.Fatalf("ProjectContextOutput.RetrievalMode = %q, want empty when no query", withoutQuery.RetrievalMode)
|
|
}
|
|
}
|
|
|
|
func TestRecallOutputIncludesRetrievalMode(t *testing.T) {
|
|
out := RecallOutput{RetrievalMode: RetrievalModeSemantic}
|
|
if out.RetrievalMode != RetrievalModeSemantic {
|
|
t.Fatalf("RecallOutput.RetrievalMode = %q, want %q", out.RetrievalMode, RetrievalModeSemantic)
|
|
}
|
|
}
|