3131
3232DEFAULT_PROVIDER = "azure-openai-responses"
3333DEFAULT_SANDBOX_MODE = "docker"
34+ COMPUTER_USE_BACKENDS = ("daytona" ,)
3435AZURE_AUTH_MSG = (
3536 "error: no Azure OpenAI auth found. Set:\n "
3637 " AZURE_OPENAI_API_KEY (required)\n "
@@ -163,6 +164,12 @@ def main(argv: list[str] | None = None) -> int:
163164 "outer environment"
164165 ),
165166 )
167+ p_run .add_argument (
168+ "--computer-use" ,
169+ choices = COMPUTER_USE_BACKENDS ,
170+ default = os .environ .get ("PITHOS_COMPUTER_USE" ),
171+ help = "Enable a computer-use backend for live verification (currently: daytona)" ,
172+ )
166173 p_run .add_argument ("--votes" , type = int , default = DEFAULT_REPO_VOTES )
167174 p_run .add_argument ("--max-findings" , type = int , default = 12 )
168175 p_run .add_argument (
@@ -278,6 +285,13 @@ def _cmd_run(args: argparse.Namespace) -> int:
278285 f"error: invalid sandbox mode { args .sandbox_mode !r} ; choose { allowed } " , file = sys .stderr
279286 )
280287 return 1
288+ if args .computer_use and args .computer_use not in COMPUTER_USE_BACKENDS :
289+ allowed = ", " .join (COMPUTER_USE_BACKENDS )
290+ print (
291+ f"error: invalid computer-use backend { args .computer_use !r} ; choose { allowed } " ,
292+ file = sys .stderr ,
293+ )
294+ return 1
281295
282296 pi_config_dir = sandbox .resolve_pi_config_dir (args .pi_config_dir )
283297 agent_env , auth_error = _resolve_agent_env (args .provider , pi_config_dir )
@@ -313,6 +327,7 @@ def _cmd_run(args: argparse.Namespace) -> int:
313327 "provider" : args .provider ,
314328 "model" : args .model ,
315329 "sandbox_mode" : args .sandbox_mode ,
330+ "computer_use" : args .computer_use ,
316331 "advisories" : args .advisories ,
317332 "web" : allow_web ,
318333 "execute_app" : args .execute_app ,
@@ -328,6 +343,8 @@ def _cmd_run(args: argparse.Namespace) -> int:
328343 print (f" provider: { args .provider } " , file = out )
329344 print (f" model: { args .model } " , file = out )
330345 print (f" sandbox: { args .sandbox_mode } " , file = out )
346+ if args .computer_use :
347+ print (f" computer: { args .computer_use } " , file = out )
331348 if pi_config_dir :
332349 print (f" pi config: { pi_config_dir } " , file = out )
333350 print (f" advisories: { args .advisories } " , file = out )
@@ -369,6 +386,7 @@ def _cmd_run(args: argparse.Namespace) -> int:
369386 agent_env = agent_env ,
370387 pi_config_dir = pi_config_dir ,
371388 sandbox_mode = args .sandbox_mode ,
389+ computer_use = args .computer_use ,
372390 env_audit_report = env_audit_report ,
373391 event_sink = event_sink ,
374392 )
@@ -402,6 +420,7 @@ def _cmd_run(args: argparse.Namespace) -> int:
402420 agent_env = agent_env ,
403421 pi_config_dir = pi_config_dir ,
404422 sandbox_mode = args .sandbox_mode ,
423+ computer_use = args .computer_use ,
405424 preflight_result = runtime_preflight ,
406425 env_audit_report = env_audit_report ,
407426 event_sink = event_sink ,
0 commit comments