From 9b424041498eb6fda6ea29b47af7ae3dc9514fc9 Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Fri, 15 May 2026 11:06:33 +0200 Subject: [PATCH] fix(sift): change reranking from invalid 'rerank' to 'position-aware' chooseSiftRetrievers returned reranking: 'rerank' which is not a valid sift CLI value. Valid values are: none, position-aware, llm, jina, gemma. This caused vector searches to fail with 'invalid value for --reranking'. Fix: use 'position-aware' for scoped subdir searches. This is the structural reranking that pairs with the vector retriever strategy. Tests: 9/9 in sift-retriever-scope.test.mjs updated and passing. Full suite: 178 files / 1845 tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/resources/extensions/sf/code-intelligence.js | 4 ++-- .../extensions/sf/tests/sift-retriever-scope.test.mjs | 8 ++++---- web/next-env.d.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/resources/extensions/sf/code-intelligence.js b/src/resources/extensions/sf/code-intelligence.js index 5e4420dc6..ad9f58d67 100644 --- a/src/resources/extensions/sf/code-intelligence.js +++ b/src/resources/extensions/sf/code-intelligence.js @@ -31,7 +31,7 @@ import { delimiter, isAbsolute, join, relative, resolve } from "node:path"; * @param {string} projectRoot - the repo root * @returns {{ retrievers: string, reranking: string }} * For repo-root scope: { retrievers: "bm25,phrase", reranking: "none" } - * For scoped paths: { retrievers: "bm25,phrase,vector", reranking: "rerank" } + * For scoped paths: { retrievers: "bm25,phrase,vector", reranking: "position-aware" } */ export function chooseSiftRetrievers(scopePath, projectRoot) { const normalizedRoot = resolve(projectRoot); @@ -44,7 +44,7 @@ export function chooseSiftRetrievers(scopePath, projectRoot) { if (isRepoRoot) { return { retrievers: "bm25,phrase", reranking: "none" }; } - return { retrievers: "bm25,phrase,vector", reranking: "rerank" }; + return { retrievers: "bm25,phrase,vector", reranking: "position-aware" }; } import { getErrorMessage } from "./error-utils.js"; diff --git a/src/resources/extensions/sf/tests/sift-retriever-scope.test.mjs b/src/resources/extensions/sf/tests/sift-retriever-scope.test.mjs index 1e9b5c103..e7ce77d58 100644 --- a/src/resources/extensions/sf/tests/sift-retriever-scope.test.mjs +++ b/src/resources/extensions/sf/tests/sift-retriever-scope.test.mjs @@ -28,19 +28,19 @@ describe("chooseSiftRetrievers", () => { it("absolute_subdir_returns_vector", () => { const result = chooseSiftRetrievers("/repo/src", "/repo"); assert.equal(result.retrievers, "bm25,phrase,vector"); - assert.equal(result.reranking, "rerank"); + assert.equal(result.reranking, "position-aware"); }); it("relative_subdir_returns_vector", () => { const result = chooseSiftRetrievers("src/foo", "/repo"); assert.equal(result.retrievers, "bm25,phrase,vector"); - assert.equal(result.reranking, "rerank"); + assert.equal(result.reranking, "position-aware"); }); it("path_outside_repo_is_scoped_returns_vector", () => { const result = chooseSiftRetrievers("/some/other/path", "/repo"); assert.equal(result.retrievers, "bm25,phrase,vector"); - assert.equal(result.reranking, "rerank"); + assert.equal(result.reranking, "position-aware"); }); }); @@ -75,7 +75,7 @@ describe("sift-search-tool buildSiftArgs via chooseSiftRetrievers", () => { it("scoped_path_gets_vector_by_default", () => { const result = simulateBuildSiftArgs({ path: "src/foo" }, "/repo"); assert.equal(result.retrievers, "bm25,phrase,vector"); - assert.equal(result.reranking, "rerank"); + assert.equal(result.reranking, "position-aware"); }); it("explicit_retrievers_override_wins_over_scope_default", () => { diff --git a/web/next-env.d.ts b/web/next-env.d.ts index 2d5420eba..0c7fad710 100644 --- a/web/next-env.d.ts +++ b/web/next-env.d.ts @@ -1,7 +1,7 @@ /// /// /// -import "./.next/types/routes.d.ts"; +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.