@@ -85,7 +85,8 @@ def submit_review(url: str, token: str, tree: str, branch: Optional[str],
8585 patches : Optional [List [str ]] = None ,
8686 patchwork_series_id : Optional [int ] = None ,
8787 chash : Optional [str ] = None ,
88- model : Optional [str ] = None ) -> str :
88+ model : Optional [str ] = None ,
89+ llm_mode : Optional [str ] = None ) -> str :
8990 """Submit patches for review
9091
9192 Args:
@@ -97,6 +98,7 @@ def submit_review(url: str, token: str, tree: str, branch: Optional[str],
9798 patchwork_series_id: Patchwork series ID (or None if using patches/hash)
9899 chash: Git hash or range (or None if using patches/patchwork)
99100 model: Optional model name (sonnet, opus, haiku)
101+ llm_mode: Optional LLM mode (classic, orc)
100102
101103 Returns:
102104 Review ID
@@ -124,6 +126,9 @@ def submit_review(url: str, token: str, tree: str, branch: Optional[str],
124126 if model :
125127 payload ['model' ] = model
126128
129+ if llm_mode :
130+ payload ['llm_mode' ] = llm_mode
131+
127132 try :
128133 response = requests .post (api_url , json = payload , timeout = 30 )
129134 response .raise_for_status ()
@@ -301,6 +306,7 @@ def main():
301306 tree = netdev/net-next
302307 branch = main
303308 model = sonnet
309+ llm_mode = classic
304310
305311 Command-line arguments always override config file values.
306312 To unset a config value, pass an empty string:
@@ -320,6 +326,8 @@ def main():
320326 help = 'Git branch name (optional)' )
321327 parser .add_argument ('--model' ,
322328 help = 'Claude model to use (e.g., sonnet, opus, haiku) [optional]' )
329+ parser .add_argument ('--llm-mode' , choices = ['classic' , 'orc' ],
330+ help = 'LLM review mode: classic (default) or orc (agent-based)' )
323331 parser .add_argument ('--format' , choices = ['json' , 'markup' , 'inline' ],
324332 default = 'inline' ,
325333 help = 'Review output format (default: inline)' )
@@ -353,6 +361,8 @@ def main():
353361 args .branch = config .get ('air' , 'branch' )
354362 if args .model is None and config .has_option ('air' , 'model' ):
355363 args .model = config .get ('air' , 'model' )
364+ if getattr (args , 'llm_mode' , None ) is None and config .has_option ('air' , 'llm_mode' ):
365+ args .llm_mode = config .get ('air' , 'llm_mode' )
356366
357367 # Convert empty strings to None (allows unsetting config values)
358368 if args .token == '' :
@@ -361,6 +371,8 @@ def main():
361371 args .branch = None
362372 if args .model == '' :
363373 args .model = None
374+ if getattr (args , 'llm_mode' , None ) == '' :
375+ args .llm_mode = None
364376
365377 # Validate that we have URL
366378 if not args .url :
@@ -408,19 +420,22 @@ def main():
408420 review_id = submit_review (args .url , args .token , args .tree ,
409421 args .branch ,
410422 patchwork_series_id = args .pw_series ,
411- model = args .model )
423+ model = args .model ,
424+ llm_mode = getattr (args , 'llm_mode' , None ))
412425 elif args .hash :
413426 print (f"Submitting git hash/range { args .hash } to { args .tree } ..." )
414427 review_id = submit_review (args .url , args .token , args .tree ,
415428 args .branch , chash = args .hash ,
416- model = args .model )
429+ model = args .model ,
430+ llm_mode = getattr (args , 'llm_mode' , None ))
417431 else :
418432 print (f"Reading { len (args .patches )} patch file(s)..." )
419433 patches = read_patch_files (args .patches )
420434 print (f"Submitting to { args .tree } ..." )
421435 review_id = submit_review (args .url , args .token , args .tree ,
422436 args .branch , patches = patches ,
423- model = args .model )
437+ model = args .model ,
438+ llm_mode = getattr (args , 'llm_mode' , None ))
424439
425440 print (f"Review ID: { review_id } " )
426441
0 commit comments