feat: allow ramble codex and gemini providers
This commit is contained in:
parent
05959e6884
commit
870308f9f6
|
|
@ -718,11 +718,7 @@ def load_ramble_preferences(repo_root: Path) -> Tuple[List[str], str, Dict[str,
|
||||||
if default_provider not in provider_choices:
|
if default_provider not in provider_choices:
|
||||||
default_provider = "mock"
|
default_provider = "mock"
|
||||||
|
|
||||||
claude_defaults = provider_map.get("claude", {})
|
return provider_choices, default_provider, provider_map
|
||||||
if not isinstance(claude_defaults, dict):
|
|
||||||
claude_defaults = {}
|
|
||||||
|
|
||||||
return provider_choices, default_provider, claude_defaults, provider_map
|
|
||||||
|
|
||||||
|
|
||||||
def build_provider(name: str, args: "argparse.Namespace", providers: Dict[str, Dict[str, Any]]) -> RambleProvider:
|
def build_provider(name: str, args: "argparse.Namespace", providers: Dict[str, Dict[str, Any]]) -> RambleProvider:
|
||||||
|
|
@ -737,19 +733,18 @@ def build_provider(name: str, args: "argparse.Namespace", providers: Dict[str, D
|
||||||
if kind == "mock":
|
if kind == "mock":
|
||||||
return cast(RambleProvider, MockProvider())
|
return cast(RambleProvider, MockProvider())
|
||||||
|
|
||||||
if kind in {"claude", "claude_cli"}:
|
if kind in {"claude", "claude_cli", "codex", "codex_cli", "gemini", "gemini_cli"}:
|
||||||
cmd = args.claude_cmd or meta.get("command") or "claude"
|
cmd = meta.get("command") or name
|
||||||
extra_args = meta.get("args", []) or []
|
extra_args = meta.get("args", []) or []
|
||||||
if isinstance(extra_args, str):
|
if isinstance(extra_args, str):
|
||||||
extra_args = [extra_args]
|
extra_args = [extra_args]
|
||||||
extra_args = [str(x) for x in extra_args]
|
extra_args = [str(x) for x in extra_args]
|
||||||
|
|
||||||
use_arg_p = bool(meta.get("use_arg_p", True))
|
|
||||||
log_path = str(meta.get("log_path", "/tmp/ramble_claude.log"))
|
|
||||||
timeout_s = int(args.timeout)
|
timeout_s = int(args.timeout)
|
||||||
tail_chars = int(args.tail)
|
tail_chars = int(args.tail)
|
||||||
debug_flag = bool(args.debug or meta.get("debug", False))
|
debug_flag = bool(args.debug or meta.get("debug", False))
|
||||||
|
|
||||||
|
provider_kind = kind.split("_")[0]
|
||||||
return cast(
|
return cast(
|
||||||
RambleProvider,
|
RambleProvider,
|
||||||
ClaudeCLIProvider(
|
ClaudeCLIProvider(
|
||||||
|
|
@ -757,9 +752,9 @@ def build_provider(name: str, args: "argparse.Namespace", providers: Dict[str, D
|
||||||
extra_args=extra_args,
|
extra_args=extra_args,
|
||||||
timeout_s=timeout_s,
|
timeout_s=timeout_s,
|
||||||
tail_chars=tail_chars,
|
tail_chars=tail_chars,
|
||||||
use_arg_p=use_arg_p,
|
use_arg_p=True,
|
||||||
debug=debug_flag,
|
debug=debug_flag,
|
||||||
log_path=log_path,
|
log_path=str(meta.get("log_path", "/tmp/ramble_ai.log")),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -769,22 +764,13 @@ def build_provider(name: str, args: "argparse.Namespace", providers: Dict[str, D
|
||||||
def parse_args(
|
def parse_args(
|
||||||
provider_choices: List[str],
|
provider_choices: List[str],
|
||||||
default_provider: str,
|
default_provider: str,
|
||||||
claude_defaults: Dict[str, Any],
|
|
||||||
):
|
):
|
||||||
p = argparse.ArgumentParser(description="Ramble → Generate (PlantUML + optional images)")
|
p = argparse.ArgumentParser(description="Ramble → Generate (PlantUML + optional images)")
|
||||||
p.add_argument("--provider", choices=provider_choices, default=default_provider)
|
p.add_argument("--provider", choices=provider_choices, default=default_provider)
|
||||||
|
|
||||||
claude_cmd_default = str(claude_defaults.get("command", "claude"))
|
timeout_default = 90
|
||||||
try:
|
tail_default = 6000
|
||||||
timeout_default = int(claude_defaults.get("timeout_s", 90))
|
|
||||||
except (TypeError, ValueError):
|
|
||||||
timeout_default = 90
|
|
||||||
try:
|
|
||||||
tail_default = int(claude_defaults.get("tail_chars", 6000))
|
|
||||||
except (TypeError, ValueError):
|
|
||||||
tail_default = 6000
|
|
||||||
|
|
||||||
p.add_argument("--claude-cmd", default=claude_cmd_default, help="Path to claude CLI")
|
|
||||||
p.add_argument("--stability", action="store_true", help="Enable Stability AI images (needs STABILITY_API_KEY)")
|
p.add_argument("--stability", action="store_true", help="Enable Stability AI images (needs STABILITY_API_KEY)")
|
||||||
p.add_argument("--pexels", action="store_true", help="Enable Pexels images (needs PEXELS_API_KEY); ignored if --stability set")
|
p.add_argument("--pexels", action="store_true", help="Enable Pexels images (needs PEXELS_API_KEY); ignored if --stability set")
|
||||||
p.add_argument("--prompt", default="Explain your new feature idea")
|
p.add_argument("--prompt", default="Explain your new feature idea")
|
||||||
|
|
@ -798,8 +784,8 @@ def parse_args(
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
repo_root = Path.cwd()
|
repo_root = Path.cwd()
|
||||||
provider_choices, default_provider, claude_defaults, provider_map = load_ramble_preferences(repo_root)
|
provider_choices, default_provider, provider_map = load_ramble_preferences(repo_root)
|
||||||
args = parse_args(provider_choices, default_provider, claude_defaults)
|
args = parse_args(provider_choices, default_provider)
|
||||||
|
|
||||||
# Provider selection with fallback
|
# Provider selection with fallback
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue