Skip to content

Commit 100d291

Browse files
committed
style: format search payload handler
1 parent 396dd66 commit 100d291

1 file changed

Lines changed: 86 additions & 86 deletions

File tree

src/tools/search-codebase.ts

Lines changed: 86 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,26 +1073,80 @@ export async function handle(
10731073
const nextHops = buildNextHops(compactResults, searchQuality);
10741074
const payloadText = finalizeSearchPayloadText(
10751075
{
1076+
status: 'success',
1077+
searchQuality: searchQualityBlock,
1078+
budget: { mode: 'compact', resultCount: compactResults.length },
1079+
...(preflightPayload && { preflight: preflightPayload }),
1080+
...(patternSummary && { patternSummary }),
1081+
...(bestExample && { bestExample }),
1082+
...(nextHops.length > 0 && { nextHops }),
1083+
results: compactResults.map((r) => {
1084+
const importedByCount = getImportedByCount(r);
1085+
const topExports = getTopExports(r.filePath);
1086+
const scope = buildScopeHeader(r.metadata);
1087+
// First 3 lines of chunk content as a lightweight signature preview
1088+
const signaturePreview = r.snippet
1089+
? r.snippet
1090+
.replace(/^\r?\n+/, '')
1091+
.split('\n')
1092+
.slice(0, 3)
1093+
.join('\n')
1094+
.trim() || undefined
1095+
: undefined;
1096+
return {
1097+
file: `${r.filePath}:${r.startLine}-${r.endLine}`,
1098+
summary: r.summary,
1099+
score: Math.round(r.score * 100) / 100,
1100+
...(r.relevanceReason && { relevanceReason: r.relevanceReason }),
1101+
...(r.componentType &&
1102+
r.layer &&
1103+
r.layer !== 'unknown' && { type: `${r.componentType}:${r.layer}` }),
1104+
...(r.trend && r.trend !== 'Stable' && { trend: r.trend }),
1105+
...(r.patternWarning && { patternWarning: r.patternWarning }),
1106+
importedByCount,
1107+
...(topExports.length > 0 && { topExports }),
1108+
...(r.layer && r.layer !== 'unknown' && { layer: r.layer }),
1109+
// Structural metadata: surface AST intelligence already computed at index time
1110+
...(r.metadata?.symbolName && { symbol: r.metadata.symbolName }),
1111+
...(r.metadata?.symbolKind && { symbolKind: r.metadata.symbolKind }),
1112+
...(scope && { scope }),
1113+
...(signaturePreview && { signaturePreview })
1114+
};
1115+
}),
1116+
...(strongMemories.length > 0 && {
1117+
relatedMemories: strongMemories.map((m) => `${m.memory} (${m.effectiveConfidence})`)
1118+
})
1119+
},
1120+
{ mode: 'compact', pretty: true, transportAware: true }
1121+
);
1122+
1123+
return {
1124+
content: [
1125+
{
1126+
type: 'text',
1127+
text: payloadText
1128+
}
1129+
]
1130+
};
1131+
}
1132+
1133+
// Full mode: today's response shape + budget + relevanceReason; consumers removed
1134+
const payloadText = finalizeSearchPayloadText(
1135+
{
10761136
status: 'success',
10771137
searchQuality: searchQualityBlock,
1078-
budget: { mode: 'compact', resultCount: compactResults.length },
1138+
budget: { mode: 'full', resultCount: results.length },
10791139
...(preflightPayload && { preflight: preflightPayload }),
1080-
...(patternSummary && { patternSummary }),
1081-
...(bestExample && { bestExample }),
1082-
...(nextHops.length > 0 && { nextHops }),
1083-
results: compactResults.map((r) => {
1084-
const importedByCount = getImportedByCount(r);
1085-
const topExports = getTopExports(r.filePath);
1086-
const scope = buildScopeHeader(r.metadata);
1087-
// First 3 lines of chunk content as a lightweight signature preview
1088-
const signaturePreview = r.snippet
1089-
? r.snippet
1090-
.replace(/^\r?\n+/, '')
1091-
.split('\n')
1092-
.slice(0, 3)
1093-
.join('\n')
1094-
.trim() || undefined
1140+
results: results.map((r) => {
1141+
const relationshipsAndHints = buildRelationshipHints(r);
1142+
const enrichedSnippet = includeSnippets
1143+
? enrichSnippetWithScope(r.snippet, r.metadata, r.filePath, r.startLine)
10951144
: undefined;
1145+
const scope = buildScopeHeader(r.metadata);
1146+
// Chunk-level imports/exports (top 5 each) + complexity
1147+
const chunkImports = (r as unknown as { imports?: string[] }).imports?.slice(0, 5);
1148+
const chunkExports = (r as unknown as { exports?: string[] }).exports?.slice(0, 5);
1149+
10961150
return {
10971151
file: `${r.filePath}:${r.startLine}-${r.endLine}`,
10981152
summary: r.summary,
@@ -1103,82 +1157,28 @@ export async function handle(
11031157
r.layer !== 'unknown' && { type: `${r.componentType}:${r.layer}` }),
11041158
...(r.trend && r.trend !== 'Stable' && { trend: r.trend }),
11051159
...(r.patternWarning && { patternWarning: r.patternWarning }),
1106-
importedByCount,
1107-
...(topExports.length > 0 && { topExports }),
1108-
...(r.layer && r.layer !== 'unknown' && { layer: r.layer }),
1109-
// Structural metadata: surface AST intelligence already computed at index time
1160+
...(relationshipsAndHints.relationships && {
1161+
relationships: relationshipsAndHints.relationships
1162+
}),
1163+
...(relationshipsAndHints.hints && { hints: relationshipsAndHints.hints }),
1164+
...(enrichedSnippet && { snippet: enrichedSnippet }),
1165+
// Structural metadata
11101166
...(r.metadata?.symbolName && { symbol: r.metadata.symbolName }),
11111167
...(r.metadata?.symbolKind && { symbolKind: r.metadata.symbolKind }),
11121168
...(scope && { scope }),
1113-
...(signaturePreview && { signaturePreview })
1169+
...(chunkImports && chunkImports.length > 0 && { imports: chunkImports }),
1170+
...(chunkExports && chunkExports.length > 0 && { exports: chunkExports }),
1171+
...(r.metadata?.cyclomaticComplexity && {
1172+
complexity: r.metadata.cyclomaticComplexity
1173+
})
11141174
};
11151175
}),
1116-
...(strongMemories.length > 0 && {
1117-
relatedMemories: strongMemories.map((m) => `${m.memory} (${m.effectiveConfidence})`)
1176+
totalResults: results.length,
1177+
...(relatedMemories.length > 0 && {
1178+
relatedMemories: relatedMemories
1179+
.slice(0, 3)
1180+
.map((m) => `${m.memory} (${m.effectiveConfidence})`)
11181181
})
1119-
},
1120-
{ mode: 'compact', pretty: true, transportAware: true }
1121-
);
1122-
1123-
return {
1124-
content: [
1125-
{
1126-
type: 'text',
1127-
text: payloadText
1128-
}
1129-
]
1130-
};
1131-
}
1132-
1133-
// Full mode: today's response shape + budget + relevanceReason; consumers removed
1134-
const payloadText = finalizeSearchPayloadText(
1135-
{
1136-
status: 'success',
1137-
searchQuality: searchQualityBlock,
1138-
budget: { mode: 'full', resultCount: results.length },
1139-
...(preflightPayload && { preflight: preflightPayload }),
1140-
results: results.map((r) => {
1141-
const relationshipsAndHints = buildRelationshipHints(r);
1142-
const enrichedSnippet = includeSnippets
1143-
? enrichSnippetWithScope(r.snippet, r.metadata, r.filePath, r.startLine)
1144-
: undefined;
1145-
const scope = buildScopeHeader(r.metadata);
1146-
// Chunk-level imports/exports (top 5 each) + complexity
1147-
const chunkImports = (r as unknown as { imports?: string[] }).imports?.slice(0, 5);
1148-
const chunkExports = (r as unknown as { exports?: string[] }).exports?.slice(0, 5);
1149-
1150-
return {
1151-
file: `${r.filePath}:${r.startLine}-${r.endLine}`,
1152-
summary: r.summary,
1153-
score: Math.round(r.score * 100) / 100,
1154-
...(r.relevanceReason && { relevanceReason: r.relevanceReason }),
1155-
...(r.componentType &&
1156-
r.layer &&
1157-
r.layer !== 'unknown' && { type: `${r.componentType}:${r.layer}` }),
1158-
...(r.trend && r.trend !== 'Stable' && { trend: r.trend }),
1159-
...(r.patternWarning && { patternWarning: r.patternWarning }),
1160-
...(relationshipsAndHints.relationships && {
1161-
relationships: relationshipsAndHints.relationships
1162-
}),
1163-
...(relationshipsAndHints.hints && { hints: relationshipsAndHints.hints }),
1164-
...(enrichedSnippet && { snippet: enrichedSnippet }),
1165-
// Structural metadata
1166-
...(r.metadata?.symbolName && { symbol: r.metadata.symbolName }),
1167-
...(r.metadata?.symbolKind && { symbolKind: r.metadata.symbolKind }),
1168-
...(scope && { scope }),
1169-
...(chunkImports && chunkImports.length > 0 && { imports: chunkImports }),
1170-
...(chunkExports && chunkExports.length > 0 && { exports: chunkExports }),
1171-
...(r.metadata?.cyclomaticComplexity && {
1172-
complexity: r.metadata.cyclomaticComplexity
1173-
})
1174-
};
1175-
}),
1176-
totalResults: results.length,
1177-
...(relatedMemories.length > 0 && {
1178-
relatedMemories: relatedMemories
1179-
.slice(0, 3)
1180-
.map((m) => `${m.memory} (${m.effectiveConfidence})`)
1181-
})
11821182
},
11831183
{ mode: 'full', pretty: true, transportAware: true }
11841184
);

0 commit comments

Comments
 (0)