@@ -61,6 +61,12 @@ interface HighlightPage {
6161 markdown : string ;
6262}
6363
64+ export interface HighlightIndexedPage {
65+ id : string ;
66+ url : string ;
67+ indexObject : string ;
68+ }
69+
6470// Result for one page in the batch: the service's highlight entries plus the
6571// reassembled markdown document.
6672interface HighlightResult {
@@ -149,16 +155,20 @@ function requestHeaders(requestId?: string): Record<string, string> {
149155 * its provider snippet without discarding successful pages. Returns null when
150156 * the whole call fails.
151157 */
152- export async function generateHighlightsBatch (
158+ interface HighlightBatchOptions {
159+ logger : Logger ;
160+ logPayload ?: boolean ;
161+ allowLegacyFallback ?: boolean ;
162+ requestId ?: string ;
163+ onFailure ?: ( reason : HighlightFailureReason ) => void ;
164+ }
165+
166+ async function generateHighlightsBatchRequest (
167+ endpoint : "/batch_highlight" | "/batch_highlight_indexed" ,
153168 query : string ,
154- pages : HighlightPage [ ] ,
155- opts : {
156- logger : Logger ;
157- logPayload ?: boolean ;
158- allowLegacyFallback ?: boolean ;
159- requestId ?: string ;
160- onFailure ?: ( reason : HighlightFailureReason ) => void ;
161- } ,
169+ pages : Array < HighlightPage | HighlightIndexedPage > ,
170+ opts : HighlightBatchOptions ,
171+ legacyPages ?: HighlightPage [ ] ,
162172) : Promise < Map < string , HighlightResult > | null > {
163173 if ( pages . length === 0 ) {
164174 return new Map ( ) ;
@@ -170,7 +180,7 @@ export async function generateHighlightsBatch(
170180 try {
171181 const baseUrl = config . HIGHLIGHT_MODEL_URL ! . replace ( / \/ $ / , "" ) ;
172182 const res = await fetchBatchWithRetry (
173- `${ baseUrl } /batch_highlight ` ,
183+ `${ baseUrl } ${ endpoint } ` ,
174184 {
175185 method : "POST" ,
176186 headers : requestHeaders ( opts . requestId ) ,
@@ -186,6 +196,7 @@ export async function generateHighlightsBatch(
186196 // endpoint, whose /batch_highlight contract uses {requests: [...]}. Keep
187197 // highlights available until infra switches the URL to GCP Stage 1.
188198 if (
199+ legacyPages &&
189200 opts . allowLegacyFallback !== false &&
190201 ( res . status === 400 || res . status === 404 )
191202 ) {
@@ -196,7 +207,7 @@ export async function generateHighlightsBatch(
196207 return await generateLegacyHighlightsBatch (
197208 baseUrl ,
198209 query ,
199- pages ,
210+ legacyPages ,
200211 controller . signal ,
201212 opts ,
202213 ) ;
@@ -253,6 +264,33 @@ export async function generateHighlightsBatch(
253264 }
254265}
255266
267+ export async function generateHighlightsBatch (
268+ query : string ,
269+ pages : HighlightPage [ ] ,
270+ opts : HighlightBatchOptions ,
271+ ) : Promise < Map < string , HighlightResult > | null > {
272+ return generateHighlightsBatchRequest (
273+ "/batch_highlight" ,
274+ query ,
275+ pages ,
276+ opts ,
277+ pages ,
278+ ) ;
279+ }
280+
281+ export async function generateHighlightsIndexedBatch (
282+ query : string ,
283+ pages : HighlightIndexedPage [ ] ,
284+ opts : Omit < HighlightBatchOptions , "allowLegacyFallback" > ,
285+ ) : Promise < Map < string , HighlightResult > | null > {
286+ return generateHighlightsBatchRequest (
287+ "/batch_highlight_indexed" ,
288+ query ,
289+ pages ,
290+ { ...opts , allowLegacyFallback : false } ,
291+ ) ;
292+ }
293+
256294async function generateLegacyHighlightsBatch (
257295 baseUrl : string ,
258296 query : string ,
0 commit comments