Source code for orka.cli.parser

# OrKa: Orchestrator Kit Agents
# Copyright © 2025 Marco Somma
#
# This file is part of OrKa – https://github.com/marcosomma/orka-resoning
#
# Licensed under the Apache License, Version 2.0 (Apache 2.0).
# You may not use this file for commercial purposes without explicit permission.
#
# Full license: https://www.apache.org/licenses/LICENSE-2.0
# For commercial use, contact: marcosomma.work@gmail.com
#
# Required attribution: OrKa by Marco Somma – https://github.com/marcosomma/orka-resoning

"""
CLI Parser
==========

This module contains the command-line argument parsing logic for the OrKa CLI.
"""

import argparse

from .memory import memory_cleanup, memory_configure, memory_stats, memory_watch
from .orchestrator import run_orchestrator


[docs] def create_parser(): """Create and configure the main argument parser.""" parser = argparse.ArgumentParser( description="OrKa - Orchestrator Kit for Agents", formatter_class=argparse.RawDescriptionHelpFormatter, ) # Global options parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose logging") parser.add_argument("--json", action="store_true", help="Output in JSON format") return parser
[docs] def setup_subcommands(parser): """Set up all subcommands and their arguments.""" # Subcommands subparsers = parser.add_subparsers(dest="command", help="Available commands") # Run command run_parser = subparsers.add_parser("run", help="Run orchestrator with configuration") run_parser.add_argument("config", help="Path to YAML configuration file") run_parser.add_argument("input", help="Input for the orchestrator") run_parser.set_defaults(func=run_orchestrator) # Memory commands memory_parser = subparsers.add_parser("memory", help="Memory management commands") memory_subparsers = memory_parser.add_subparsers( dest="memory_command", help="Memory operations", ) # Memory stats stats_parser = memory_subparsers.add_parser("stats", help="Display memory statistics") stats_parser.add_argument( "--backend", choices=["redis", "redisstack", "kafka"], help="Memory backend to use", ) stats_parser.set_defaults(func=memory_stats) # Memory cleanup cleanup_parser = memory_subparsers.add_parser("cleanup", help="Clean up expired memory entries") cleanup_parser.add_argument( "--backend", choices=["redis", "redisstack", "kafka"], help="Memory backend to use", ) cleanup_parser.add_argument( "--dry-run", action="store_true", help="Preview what would be deleted", ) cleanup_parser.set_defaults(func=memory_cleanup) # Memory configure config_parser = memory_subparsers.add_parser("configure", help="Display memory configuration") config_parser.add_argument( "--backend", choices=["redis", "redisstack", "kafka"], help="Memory backend to use", ) config_parser.set_defaults(func=memory_configure) # Memory watch watch_parser = memory_subparsers.add_parser( "watch", help="Watch memory statistics in real-time with modern TUI", ) watch_parser.add_argument( "--backend", choices=["redis", "redisstack", "kafka"], help="Memory backend to use", ) watch_parser.add_argument( "--interval", type=float, default=5, help="Refresh interval in seconds", ) watch_parser.add_argument( "--no-clear", action="store_true", help="Do not clear screen between updates", ) watch_parser.add_argument( "--compact", action="store_true", help="Use compact layout for long workflows", ) watch_parser.add_argument( "--use-rich", action="store_true", help="Use Rich fallback interface instead of Textual", ) watch_parser.add_argument( "--fallback", action="store_true", help="Use basic terminal interface (no TUI)", ) watch_parser.set_defaults(func=memory_watch) return parser