MCPcopy
hub / github.com/rohitg00/agentmemory / registerQueryExpansionFunction

Function registerQueryExpansionFunction

src/functions/query-expansion.ts:69–130  ·  view source on GitHub ↗
(
  sdk: ISdk,
  provider: MemoryProvider,
)

Source from the content-addressed store, hash-verified

67}
68
69export function registerQueryExpansionFunction(
70 sdk: ISdk,
71 provider: MemoryProvider,
72): void {
73 sdk.registerFunction("mem::expand-query",
74 async (data: { query: string; maxReformulations?: number } | undefined) => {
75 if (!data || typeof data.query !== "string" || !data.query.trim()) {
76 logger.warn("Invalid expand-query payload");
77 return { success: false, error: "query must be a non-empty string" };
78 }
79 const rawMaxR = Number(data.maxReformulations);
80 const maxR = Number.isFinite(rawMaxR)
81 ? Math.max(1, Math.min(10, Math.floor(rawMaxR)))
82 : 5;
83 const query = data.query.trim();
84
85 try {
86 const response = await provider.compress(
87 QUERY_EXPANSION_SYSTEM,
88 `Expand this query for memory retrieval:\n\n"${query}"`,
89 );
90
91 const parsed = parseExpansionXml(response);
92 if (!parsed) {
93 logger.warn("Failed to parse query expansion");
94 return {
95 success: true,
96 expansion: {
97 original: query,
98 reformulations: [],
99 temporalConcretizations: [],
100 entityExtractions: [],
101 },
102 };
103 }
104
105 parsed.original = query;
106 parsed.reformulations = parsed.reformulations.slice(0, maxR);
107
108 logger.info("Query expanded", {
109 original: query,
110 reformulations: parsed.reformulations.length,
111 entities: parsed.entityExtractions.length,
112 });
113
114 return { success: true, expansion: parsed };
115 } catch (err) {
116 const msg = err instanceof Error ? err.message : String(err);
117 logger.error("Query expansion failed", { error: msg });
118 return {
119 success: true,
120 expansion: {
121 original: query,
122 reformulations: [],
123 temporalConcretizations: [],
124 entityExtractions: [],
125 },
126 };

Callers 2

mainFunction · 0.85

Calls 2

parseExpansionXmlFunction · 0.85
compressMethod · 0.65

Tested by

no test coverage detected