@@ -54,6 +54,8 @@ pub fn system_prompt(format: PromptFormat) -> &'static str {
5454 match format {
5555 PromptFormat :: MarkedExcerpt => MARKED_EXCERPT_SYSTEM_PROMPT ,
5656 PromptFormat :: LabeledSections => LABELED_SECTIONS_SYSTEM_PROMPT ,
57+ // only intended for use via zeta_cli
58+ PromptFormat :: OnlySnippets => "" ,
5759 }
5860}
5961
@@ -343,6 +345,7 @@ impl<'a> PlannedPrompt<'a> {
343345 self . request. excerpt_range. start + self . request. cursor_offset,
344346 CURSOR_MARKER ,
345347 ) ] ,
348+ PromptFormat :: OnlySnippets => vec ! [ ] ,
346349 } ;
347350
348351 let mut prompt = String :: new ( ) ;
@@ -432,12 +435,13 @@ impl<'a> PlannedPrompt<'a> {
432435 }
433436
434437 writeln ! ( output, "```{}" , file_path. display( ) ) . ok ( ) ;
438+ let mut skipped_last_snippet = false ;
435439 for ( snippet, range) in disjoint_snippets {
436440 let section_index = section_ranges. len ( ) ;
437441
438442 match self . request . prompt_format {
439- PromptFormat :: MarkedExcerpt => {
440- if range. start > 0 {
443+ PromptFormat :: MarkedExcerpt | PromptFormat :: OnlySnippets => {
444+ if range. start > 0 && !skipped_last_snippet {
441445 output. push_str ( "…\n " ) ;
442446 }
443447 }
@@ -454,25 +458,38 @@ impl<'a> PlannedPrompt<'a> {
454458 }
455459
456460 if is_excerpt_file {
457- excerpt_index = Some ( section_index) ;
458- let mut last_offset = range. start ;
459- let mut i = 0 ;
460- while i < excerpt_file_insertions. len ( ) {
461- let ( offset, insertion) = & excerpt_file_insertions[ i] ;
462- let found = * offset >= range. start && * offset <= range. end ;
463- if found {
464- output. push_str (
465- & snippet. text [ last_offset - range. start ..offset - range. start ] ,
466- ) ;
467- output. push_str ( insertion) ;
468- last_offset = * offset;
469- excerpt_file_insertions. remove ( i) ;
470- continue ;
461+ if self . request . prompt_format == PromptFormat :: OnlySnippets {
462+ if range. start >= self . request . excerpt_range . start
463+ && range. end <= self . request . excerpt_range . end
464+ {
465+ skipped_last_snippet = true ;
466+ } else {
467+ skipped_last_snippet = false ;
468+ output. push_str ( snippet. text ) ;
471469 }
472- i += 1 ;
470+ } else {
471+ let mut last_offset = range. start ;
472+ let mut i = 0 ;
473+ while i < excerpt_file_insertions. len ( ) {
474+ let ( offset, insertion) = & excerpt_file_insertions[ i] ;
475+ let found = * offset >= range. start && * offset <= range. end ;
476+ if found {
477+ excerpt_index = Some ( section_index) ;
478+ output. push_str (
479+ & snippet. text [ last_offset - range. start ..offset - range. start ] ,
480+ ) ;
481+ output. push_str ( insertion) ;
482+ last_offset = * offset;
483+ excerpt_file_insertions. remove ( i) ;
484+ continue ;
485+ }
486+ i += 1 ;
487+ }
488+ skipped_last_snippet = false ;
489+ output. push_str ( & snippet. text [ last_offset - range. start ..] ) ;
473490 }
474- output. push_str ( & snippet. text [ last_offset - range. start ..] ) ;
475491 } else {
492+ skipped_last_snippet = false ;
476493 output. push_str ( snippet. text ) ;
477494 }
478495
@@ -483,7 +500,11 @@ impl<'a> PlannedPrompt<'a> {
483500 }
484501
485502 Ok ( SectionLabels {
486- excerpt_index : excerpt_index. context ( "bug: no snippet found for excerpt" ) ?,
503+ // TODO: Clean this up
504+ excerpt_index : match self . request . prompt_format {
505+ PromptFormat :: OnlySnippets => 0 ,
506+ _ => excerpt_index. context ( "bug: no snippet found for excerpt" ) ?,
507+ } ,
487508 section_ranges,
488509 } )
489510 }
0 commit comments