@@ -93,6 +93,7 @@ def _write_manifest(
9393 entry_payload : Dict [str , Any ],
9494 docs_payload : Dict [str , Any ],
9595 llm_payload : Dict [str , Any ],
96+ llm_mode : str ,
9697 verification_payload : Dict [str , Any ],
9798 html_payload : Dict [str , Any ],
9899 fact_check_payload : Dict [str , Any ],
@@ -118,6 +119,7 @@ def _write_manifest(
118119 "docs_parsed" : docs_payload .get ("parsed_count" , 0 ),
119120 "llm_descriptions_enabled" : llm_payload .get ("enabled" , False ),
120121 "llm_descriptions_used" : llm_payload .get ("used" , False ),
122+ "llm_mode" : llm_mode ,
121123 "llm_model" : llm_payload .get ("model" , "" ),
122124 "verification_fact_count" : verification_payload .get ("fact_count" , 0 ),
123125 "fact_check_passed" : fact_check_payload .get ("passed" , False ),
@@ -139,7 +141,7 @@ def run_pipeline(
139141 output_format : str ,
140142 analysis_type : str ,
141143 enable_web_enrichment : bool ,
142- enable_llm_descriptions : bool ,
144+ llm_mode : str ,
143145 ask_before_llm_use : bool = False ,
144146 prompt_for_llm_key : bool = False ,
145147 include_globs : List [str ] | None = None ,
@@ -209,7 +211,7 @@ def run_pipeline(
209211 docs_payload = coverage_payload ,
210212 context_payload = context_payload ,
211213 out_dir = meta_dir ,
212- enabled = enable_llm_descriptions ,
214+ llm_mode = llm_mode ,
213215 ask_before_use = ask_before_llm_use ,
214216 prompt_for_key = prompt_for_llm_key ,
215217 )
@@ -289,6 +291,7 @@ def run_pipeline(
289291 entry_payload = entry_payload ,
290292 docs_payload = coverage_payload ,
291293 llm_payload = llm_payload ,
294+ llm_mode = llm_mode ,
292295 verification_payload = verification_payload ,
293296 html_payload = html_payload ,
294297 fact_check_payload = fact_check_payload ,
@@ -303,6 +306,7 @@ def run_pipeline(
303306 mode = mode ,
304307 output_format = output_format ,
305308 analysis_type = analysis_type ,
309+ llm_mode = llm_mode ,
306310 )
307311
308312 return {
@@ -313,6 +317,7 @@ def run_pipeline(
313317 "output_format" : output_format ,
314318 "audience" : audience ,
315319 "overview_length" : overview_length ,
320+ "llm_mode" : llm_mode ,
316321 "file_count" : index_payload .get ("file_count" , 0 ),
317322 "docs_discovered" : coverage_payload .get ("discovered_count" , 0 ),
318323 "docs_parsed" : coverage_payload .get ("parsed_count" , 0 ),
@@ -339,7 +344,7 @@ def _parse_args() -> argparse.Namespace:
339344 parser .add_argument ("--mode" , default = "standard" , choices = ["quick" , "standard" , "deep" ])
340345 parser .add_argument ("--audience" , default = "nontech" , choices = ["nontech" , "mixed" , "engineering" ])
341346 parser .add_argument ("--overview-length" , default = "medium" , choices = ["short" , "medium" , "long" ])
342- parser .add_argument ("--format" , default = "markdown " , choices = ["markdown" , "html" , "both" ])
347+ parser .add_argument ("--format" , default = "both " , choices = ["markdown" , "html" , "both" ])
343348 parser .add_argument (
344349 "--explainer-type" ,
345350 default = "onboarding" ,
@@ -361,9 +366,10 @@ def _parse_args() -> argparse.Namespace:
361366 help = "Glob(s) to exclude from indexing." ,
362367 )
363368 parser .add_argument ("--enable-web-enrichment" , default = "true" )
364- parser .add_argument ("--enable-llm-descriptions" , default = "true" )
365- parser .add_argument ("--ask-before-llm-use" , default = "false" )
366- parser .add_argument ("--prompt-for-llm-key" , default = "false" )
369+ parser .add_argument ("--llm-mode" , default = "auto" , choices = ["auto" , "required" , "off" ])
370+ parser .add_argument ("--enable-llm-descriptions" , default = "" )
371+ parser .add_argument ("--ask-before-llm-use" , default = "true" )
372+ parser .add_argument ("--prompt-for-llm-key" , default = "true" )
367373 return parser .parse_args ()
368374
369375
@@ -375,7 +381,9 @@ def main() -> int:
375381
376382 mode = common .normalize_mode (args .mode )
377383 web_enabled = common .bool_from_string (args .enable_web_enrichment )
378- llm_enabled = common .bool_from_string (args .enable_llm_descriptions )
384+ llm_mode = (args .llm_mode or "auto" ).strip ().lower ()
385+ if args .enable_llm_descriptions .strip ():
386+ llm_mode = "auto" if common .bool_from_string (args .enable_llm_descriptions ) else "off"
379387 ask_before_llm_use = common .bool_from_string (args .ask_before_llm_use )
380388 prompt_for_llm_key = common .bool_from_string (args .prompt_for_llm_key )
381389 summary = run_pipeline (
@@ -387,7 +395,7 @@ def main() -> int:
387395 output_format = args .format ,
388396 analysis_type = args .explainer_type ,
389397 enable_web_enrichment = web_enabled ,
390- enable_llm_descriptions = llm_enabled ,
398+ llm_mode = llm_mode ,
391399 ask_before_llm_use = ask_before_llm_use ,
392400 prompt_for_llm_key = prompt_for_llm_key ,
393401 include_globs = args .include_glob ,
@@ -405,6 +413,7 @@ def main() -> int:
405413 "output_format" ,
406414 "audience" ,
407415 "overview_length" ,
416+ "llm_mode" ,
408417 "file_count" ,
409418 "docs_discovered" ,
410419 "docs_parsed" ,
0 commit comments