|
4 | 4 | */ |
5 | 5 |
|
6 | 6 | import { attachRawContext } from "../../token-usage.js"; |
| 7 | +import { extractProjectionRequestOptions } from "../../request-normalization.js"; |
7 | 8 | import { parseActionHandlerArgs } from "../../../gateway/dispatch-spine.js"; |
8 | 9 | import { |
9 | 10 | SearchEditRequestSchema, |
@@ -102,15 +103,18 @@ function compactStoredSummary( |
102 | 103 | }; |
103 | 104 | } |
104 | 105 |
|
105 | | -function compactRetrievalEvidence(evidence: RetrievalEvidence): RetrievalEvidence { |
| 106 | +function compactRetrievalEvidence( |
| 107 | + evidence: RetrievalEvidence, |
| 108 | + includeDiagnostics: boolean, |
| 109 | +): RetrievalEvidence { |
106 | 110 | const topRanksPerSource = Object.fromEntries( |
107 | 111 | Object.entries(evidence.topRanksPerSource).map(([source, ranks]) => [ |
108 | 112 | source, |
109 | 113 | ranks.slice(0, MAX_RETRIEVAL_EVIDENCE_ITEMS), |
110 | 114 | ]), |
111 | 115 | ); |
112 | 116 |
|
113 | | - return { |
| 117 | + const compacted: RetrievalEvidence = { |
114 | 118 | ...evidence, |
115 | 119 | topRanksPerSource, |
116 | 120 | ...(evidence.feedbackBoosts |
@@ -144,11 +148,17 @@ function compactRetrievalEvidence(evidence: RetrievalEvidence): RetrievalEvidenc |
144 | 148 | } |
145 | 149 | : {}), |
146 | 150 | }; |
| 151 | + if (!includeDiagnostics) { |
| 152 | + delete compacted.fusionLatencyMs; |
| 153 | + delete compacted.diagnosticTimings; |
| 154 | + } |
| 155 | + return compacted; |
147 | 156 | } |
148 | 157 |
|
149 | 158 | async function handlePreview( |
150 | 159 | request: Extract<SearchEditRequest, { mode: "preview" }>, |
151 | 160 | context: ToolContext | undefined, |
| 161 | + includeDiagnostics: boolean, |
152 | 162 | ): Promise<SearchEditResponse> { |
153 | 163 | const preview = await planSearchEditPreview({ |
154 | 164 | repoId: request.repoId, |
@@ -199,7 +209,10 @@ async function handlePreview( |
199 | 209 | expiresAt: new Date(stored.expiresAt).toISOString(), |
200 | 210 | ...(preview.summary.partial ? { partial: true } : {}), |
201 | 211 | ...(preview.retrievalEvidence |
202 | | - ? { retrievalEvidence: compactRetrievalEvidence(preview.retrievalEvidence) } |
| 212 | + ? { retrievalEvidence: compactRetrievalEvidence( |
| 213 | + preview.retrievalEvidence, |
| 214 | + includeDiagnostics, |
| 215 | + ) } |
203 | 216 | : {}), |
204 | 217 | }; |
205 | 218 | const rawBytes = computeAggregateRawBytes(stored); |
@@ -304,9 +317,10 @@ export async function handleSearchEdit( |
304 | 317 | args: unknown, |
305 | 318 | context?: ToolContext, |
306 | 319 | ): Promise<SearchEditResponse> { |
| 320 | + const { includeDiagnostics = false } = extractProjectionRequestOptions(args); |
307 | 321 | const request = parseActionHandlerArgs(SearchEditRequestSchema, args); |
308 | 322 | if (request.mode === "preview") { |
309 | | - return handlePreview(request, context); |
| 323 | + return handlePreview(request, context, includeDiagnostics); |
310 | 324 | } |
311 | 325 | return handleApply(request); |
312 | 326 | } |
0 commit comments