(args: list[str])
| 418 | |
| 419 | |
| 420 | def _cmd_route(args: list[str]) -> None: |
| 421 | flags, rest = _parse_flags(args, { |
| 422 | "system-prompt": True, |
| 423 | "max-tokens": True, |
| 424 | "mode": True, |
| 425 | "json": False, |
| 426 | "no-feedback": False, |
| 427 | }) |
| 428 | |
| 429 | prompt = " ".join(rest) |
| 430 | if not prompt: |
| 431 | print("Error: no prompt provided", file=sys.stderr) |
| 432 | sys.exit(1) |
| 433 | |
| 434 | system_prompt = str(flags["system-prompt"]) if "system-prompt" in flags else None |
| 435 | max_tokens = int(flags.get("max-tokens", 4096)) |
| 436 | if "mode" in flags: |
| 437 | mode_flag = str(flags["mode"]).strip().lower() |
| 438 | else: |
| 439 | from uncommon_route.routing_config_store import RoutingConfigStore |
| 440 | mode_flag = RoutingConfigStore().default_mode().value |
| 441 | output_json = bool(flags.get("json", False)) |
| 442 | no_feedback = bool(flags.get("no-feedback", False)) |
| 443 | |
| 444 | from uncommon_route.router.types import RoutingInfeasibleError, RoutingMode |
| 445 | |
| 446 | try: |
| 447 | routing_mode = RoutingMode(mode_flag) |
| 448 | except ValueError: |
| 449 | print( |
| 450 | "Error: --mode must be one of auto, fast, best", |
| 451 | file=sys.stderr, |
| 452 | ) |
| 453 | sys.exit(1) |
| 454 | |
| 455 | start = time.perf_counter_ns() |
| 456 | try: |
| 457 | decision = route( |
| 458 | prompt, |
| 459 | system_prompt=system_prompt, |
| 460 | max_output_tokens=max_tokens, |
| 461 | routing_mode=routing_mode, |
| 462 | ) |
| 463 | except RoutingInfeasibleError as exc: |
| 464 | detail = exc.infeasibility.as_dict() |
| 465 | if output_json: |
| 466 | print(json.dumps({"error": detail}, indent=2)) |
| 467 | else: |
| 468 | print(f" Error: {detail['message']}", file=sys.stderr) |
| 469 | if detail.get("failed_constraints"): |
| 470 | print( |
| 471 | " Constraints: " |
| 472 | + ", ".join(str(tag) for tag in detail["failed_constraints"]), |
| 473 | file=sys.stderr, |
| 474 | ) |
| 475 | if detail.get("missing_capabilities"): |
| 476 | print( |
| 477 | " Missing: " |
no test coverage detected