"""Shared shellctl constants.

This module intentionally contains only literal defaults and bounds so callers
can import stable configuration values without pulling in the heavier DTO,
sanitize, or server packages. The network CLI depends on this file for its
base URL and auth-token environment contract, so keep it import-light.
"""

DEFAULT_AUTH_TOKEN_ENV = "SHELLCTL_AUTH_TOKEN"
DEFAULT_BASE_URL_ENV = "SHELLCTL_BASE_URL"
DEFAULT_BASE_URL = "http://127.0.0.1:8765"
DEFAULT_OUTPUT_LIMIT_BYTES = 1024 * 8
MAX_OUTPUT_LIMIT_BYTES = 1024 * 1024
DEFAULT_TIMEOUT_SECONDS = 30.0
MAX_WAIT_TIMEOUT_SECONDS = 5.0 * 60.0
DEFAULT_IDLE_FLUSH_SECONDS = 0.5
DEFAULT_TERMINATE_GRACE_SECONDS = 5.0
DEFAULT_TERMINAL_COLS = 120
DEFAULT_TERMINAL_ROWS = 80
DEFAULT_LIST_LIMIT = 100
MAX_LIST_LIMIT = 1000
DEFAULT_GC_INTERVAL_SECONDS = 10.0 * 60.0
DEFAULT_GC_FINISHED_JOB_RETENTION_SECONDS = 24.0 * 60.0 * 60.0
JOB_ID_ALPHABET = "0123456789abcdefghjkmnpqrstvwxyz"
JOB_ID_RANDOM_SUFFIX_LENGTH = 3
SESSION_NAME_PREFIX = "shellctl-job-"
DEFAULT_HEALTH_STATUS = "ok"

__all__ = [
    "DEFAULT_AUTH_TOKEN_ENV",
    "DEFAULT_BASE_URL",
    "DEFAULT_BASE_URL_ENV",
    "DEFAULT_GC_FINISHED_JOB_RETENTION_SECONDS",
    "DEFAULT_GC_INTERVAL_SECONDS",
    "DEFAULT_HEALTH_STATUS",
    "DEFAULT_IDLE_FLUSH_SECONDS",
    "DEFAULT_LIST_LIMIT",
    "DEFAULT_OUTPUT_LIMIT_BYTES",
    "DEFAULT_TERMINAL_COLS",
    "DEFAULT_TERMINAL_ROWS",
    "DEFAULT_TERMINATE_GRACE_SECONDS",
    "DEFAULT_TIMEOUT_SECONDS",
    "JOB_ID_ALPHABET",
    "JOB_ID_RANDOM_SUFFIX_LENGTH",
    "MAX_LIST_LIMIT",
    "MAX_OUTPUT_LIMIT_BYTES",
    "MAX_WAIT_TIMEOUT_SECONDS",
    "SESSION_NAME_PREFIX",
]
