49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
"""Internal defaults and constants for clink."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from pathlib import Path
|
|
|
|
DEFAULT_TIMEOUT_SECONDS = 1800
|
|
DEFAULT_STREAM_LIMIT = 10 * 1024 * 1024 # 10MB per stream
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
BUILTIN_PROMPTS_DIR = PROJECT_ROOT / "systemprompts" / "clink"
|
|
CONFIG_DIR = PROJECT_ROOT / "conf" / "cli_clients"
|
|
USER_CONFIG_DIR = Path.home() / ".pal" / "cli_clients"
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class CLIInternalDefaults:
|
|
"""Internal defaults applied to a CLI client during registry load."""
|
|
|
|
parser: str
|
|
additional_args: list[str] = field(default_factory=list)
|
|
env: dict[str, str] = field(default_factory=dict)
|
|
default_role_prompt: str | None = None
|
|
timeout_seconds: int = DEFAULT_TIMEOUT_SECONDS
|
|
runner: str | None = None
|
|
|
|
|
|
INTERNAL_DEFAULTS: dict[str, CLIInternalDefaults] = {
|
|
"gemini": CLIInternalDefaults(
|
|
parser="gemini_json",
|
|
additional_args=["-o", "json"],
|
|
default_role_prompt="systemprompts/clink/default.txt",
|
|
runner="gemini",
|
|
),
|
|
"codex": CLIInternalDefaults(
|
|
parser="codex_jsonl",
|
|
additional_args=["exec"],
|
|
default_role_prompt="systemprompts/clink/default.txt",
|
|
runner="codex",
|
|
),
|
|
"claude": CLIInternalDefaults(
|
|
parser="claude_json",
|
|
additional_args=["--print", "--output-format", "json"],
|
|
default_role_prompt="systemprompts/clink/default.txt",
|
|
runner="claude",
|
|
),
|
|
}
|