diff --git a/apps/browser-extension/entrypoints/background.ts b/apps/browser-extension/entrypoints/background.ts index e6dba3eb..f9f9c979 100644 --- a/apps/browser-extension/entrypoints/background.ts +++ b/apps/browser-extension/entrypoints/background.ts @@ -148,7 +148,17 @@ export default defineBackground(() => { eventSource: string, ): Promise<{ success: boolean; data?: unknown; error?: string }> => { try { - const responseData = await searchMemories(data) + let containerTag: string = CONTAINER_TAGS.DEFAULT_PROJECT + try { + const defaultProject = await getDefaultProject() + if (defaultProject?.containerTag) { + containerTag = defaultProject.containerTag + } + } catch (error) { + console.warn("Failed to get default project, using fallback:", error) + } + + const responseData = await searchMemories(data, containerTag) const response = responseData as { results?: Array<{ memory?: string }> } diff --git a/apps/browser-extension/tsconfig.json b/apps/browser-extension/tsconfig.json index 621fa129..781af494 100644 --- a/apps/browser-extension/tsconfig.json +++ b/apps/browser-extension/tsconfig.json @@ -4,5 +4,6 @@ "allowImportingTsExtensions": true, "jsx": "react-jsx", "types": ["chrome"] - } + }, + "exclude": ["**/*.test.ts"] } diff --git a/apps/browser-extension/utils/api.ts b/apps/browser-extension/utils/api.ts index dd42d078..59cef3d7 100644 --- a/apps/browser-extension/utils/api.ts +++ b/apps/browser-extension/utils/api.ts @@ -3,6 +3,7 @@ */ import { API_ENDPOINTS } from "./constants" import { bearerToken, defaultProject, userData } from "./storage" +import { buildSearchMemoriesBody } from "./search-request" import { AuthenticationError, type MemoryPayload, @@ -145,14 +146,14 @@ export async function saveMemory(payload: MemoryPayload): Promise { /** * Search memories using Supermemory API */ -export async function searchMemories(query: string): Promise { +export async function searchMemories( + query: string, + containerTag?: string, +): Promise { try { const response = await makeAuthenticatedRequest("/v4/search", { method: "POST", - body: JSON.stringify({ - q: query, - include: { relatedMemories: true }, - }), + body: JSON.stringify(buildSearchMemoriesBody(query, containerTag)), }) return response } catch (error) { diff --git a/apps/browser-extension/utils/search-request.test.ts b/apps/browser-extension/utils/search-request.test.ts new file mode 100644 index 00000000..228d0060 --- /dev/null +++ b/apps/browser-extension/utils/search-request.test.ts @@ -0,0 +1,19 @@ +import { describe, expect, it } from "bun:test" +import { buildSearchMemoriesBody } from "./search-request" + +describe("buildSearchMemoriesBody", () => { + it("builds the default related-memory search body", () => { + expect(buildSearchMemoriesBody("deploy notes")).toEqual({ + q: "deploy notes", + include: { relatedMemories: true }, + }) + }) + + it("includes the container tag when provided", () => { + expect(buildSearchMemoriesBody("deploy notes", "sm_project_docs")).toEqual({ + q: "deploy notes", + include: { relatedMemories: true }, + containerTag: "sm_project_docs", + }) + }) +}) diff --git a/apps/browser-extension/utils/search-request.ts b/apps/browser-extension/utils/search-request.ts new file mode 100644 index 00000000..95c547a1 --- /dev/null +++ b/apps/browser-extension/utils/search-request.ts @@ -0,0 +1,14 @@ +export function buildSearchMemoriesBody( + query: string, + containerTag?: string, +): { + q: string + include: { relatedMemories: boolean } + containerTag?: string +} { + return { + q: query, + include: { relatedMemories: true }, + ...(containerTag ? { containerTag } : {}), + } +}