export declare const ENV_VARS: { readonly TOKEN: "AI_SUPPORT_AGENT_TOKEN"; readonly API_URL: "AI_SUPPORT_AGENT_API_URL"; readonly TENANT_CODE: "AI_SUPPORT_AGENT_TENANT_CODE"; readonly PROJECT_CODE: "AI_SUPPORT_AGENT_PROJECT_CODE"; readonly CONFIG_DIR: "AI_SUPPORT_AGENT_CONFIG_DIR"; readonly INSTANCE_ID: "AI_SUPPORT_AGENT_INSTANCE_ID"; readonly IN_DOCKER: "AI_SUPPORT_AGENT_IN_DOCKER"; readonly ALLOW_HTTP: "AI_SUPPORT_AGENT_ALLOW_HTTP"; readonly PROJECT_DIR_MAP: "AI_SUPPORT_AGENT_PROJECT_DIR_MAP"; readonly TERMINAL_GRACE_MS: "AI_SUPPORT_AGENT_TERMINAL_GRACE_MS"; readonly ECS_LAUNCHER: "AI_SUPPORT_AGENT_ECS_LAUNCHER"; readonly CLAUDE_CODE_OAUTH_TOKEN: "CLAUDE_CODE_OAUTH_TOKEN"; readonly CHAT_CHUNK_BATCH_ENABLED: "AI_SUPPORT_AGENT_CHAT_CHUNK_BATCH_ENABLED"; readonly CHAT_CHUNK_BATCH_WINDOW_MS: "AI_SUPPORT_AGENT_CHAT_CHUNK_BATCH_WINDOW_MS"; readonly CHAT_CHUNK_BATCH_MAX_BYTES: "AI_SUPPORT_AGENT_CHAT_CHUNK_BATCH_MAX_BYTES"; readonly SERVER_SETUP_ANSIBLE_UID: "AI_SUPPORT_AGENT_SERVER_SETUP_ANSIBLE_UID"; readonly SERVER_SETUP_ANSIBLE_GID: "AI_SUPPORT_AGENT_SERVER_SETUP_ANSIBLE_GID"; readonly ANTHROPIC_API_KEY: "ANTHROPIC_API_KEY"; readonly CODEX_API_KEY: "CODEX_API_KEY"; readonly CODEX_ACCESS_TOKEN: "CODEX_ACCESS_TOKEN"; readonly CODEX_HOME: "CODEX_HOME"; }; export declare const CONFIG_DIR: string; export declare const CONFIG_FILE = "config.json"; export declare const DEFAULT_POLL_INTERVAL = 3000; export declare const DEFAULT_HEARTBEAT_INTERVAL = 60000; export declare const AUTH_TIMEOUT: number; export declare const AGENT_VERSION: string; export declare const MAX_OUTPUT_SIZE: number; export declare const MAX_AUTH_BODY_SIZE: number; export declare const API_MAX_RETRIES = 3; export declare const API_BASE_DELAY_MS = 1000; export declare const API_REQUEST_TIMEOUT = 10000; export declare const CHAT_CHUNK_BATCH_WINDOW_MS = 80; export declare const CHAT_CHUNK_BATCH_MAX_BYTES: number; export declare const DB_CONNECT_TIMEOUT_MS = 10000; /** Interval (ms) between SSH keepalive probes on an established DB tunnel. */ export declare const SSH_KEEPALIVE_INTERVAL_MS = 15000; /** Number of consecutive unanswered keepalive probes before the SSH connection is closed. */ export declare const SSH_KEEPALIVE_COUNT_MAX = 3; /** Interval between TCP probes of the local forwarded port while waiting for it to open. */ export declare const SSM_PORT_POLL_INTERVAL_MS = 200; /** Per-probe TCP connect timeout when polling the local forwarded port. */ export declare const SSM_PORT_PROBE_TIMEOUT_MS = 1000; /** Grace period after SIGTERM before escalating to SIGKILL when tearing down the SSM session subprocess. */ export declare const SSM_KILL_GRACE_MS = 5000; /** * Max bytes of the session-manager-plugin's stderr to retain for diagnostics. * Bounded so a chatty/misbehaving plugin cannot grow the buffer without limit in * the long-lived agent process; only the most recent bytes (the tail, where the * failure reason appears) are kept. */ export declare const SSM_STDERR_MAX_BYTES: number; export declare const CMD_DEFAULT_TIMEOUT = 60000; export declare const MAX_CMD_TIMEOUT: number; export declare const MAX_FILE_READ_SIZE: number; export declare const MAX_FILE_WRITE_SIZE: number; export declare const PROCESS_LIST_TIMEOUT = 10000; export declare const MAX_PROCESS_LIST_SIZE = 50000; export declare const MIN_INTERVAL = 1000; export declare const MAX_INTERVAL = 300000; export declare const MAX_DIR_ENTRIES = 1000; export declare const HIDDEN_ENTRIES: string[]; export declare const LOCALHOST_ADDRESS = "127.0.0.1"; export declare const DEFAULT_SSH_PORT = 22; export declare const DEFAULT_LOGIN_URL = "https://app.ai-support-agent.com"; export declare const DEFAULT_API_URL = "https://api.ai-support-agent.com"; export declare const PROJECT_CODE_DEFAULT = "default"; export declare const PROJECT_CODE_CLI_DIRECT = "cli-direct"; export declare const PROJECT_CODE_ENV_DEFAULT = "env-default"; export declare const ALERT_STALE_RECOVERY_INTERVAL_MS: number; export declare const ALERT_STALE_PROCESSING_MINUTES = 30; export declare const UPDATE_CHECK_INTERVAL: number; export declare const UPDATE_CHECK_INITIAL_DELAY = 30000; export declare const NPM_INSTALL_TIMEOUT = 120000; export declare const NPM_COMMAND: string; export declare const DEFAULT_ANTHROPIC_MODEL = "claude-sonnet-4-6-20250514"; export declare const DEFAULT_CLAUDE_MODEL = "claude-sonnet-4-6"; export declare const ANTHROPIC_API_VERSION = "2023-06-01"; export declare const ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages"; export declare const DEFAULT_MAX_TOKENS = 4096; export declare const CHAT_TIMEOUT = 300000; export declare const CHAT_TOOL_EXECUTION_TIMEOUT = 1800000; export declare const CHAT_SIGKILL_DELAY = 5000; export declare const CLAUDE_DETECT_TIMEOUT_MS = 5000; export declare const CODEX_DETECT_TIMEOUT_MS = 5000; export declare const DEFAULT_APPSYNC_TIMEOUT_MS = 300000; export declare const CHAT_RETRY_DELAY_MS = 3000; export declare const CHAT_MAX_ATTEMPTS = 2; export declare const LOG_MESSAGE_LIMIT = 100; export declare const LOG_PAYLOAD_LIMIT = 500; export declare const LOG_RESULT_LIMIT = 300; export declare const LOG_DEBUG_LIMIT = 200; export declare const CHUNK_LOG_LIMIT = 100; /** * claude/codex CLI サブプロセスが非0終了コードで終了した際、失敗診断用に * warn レベルでログ出力する stderr 全文の切り詰め上限。 * LOG_DEBUG_LIMIT はチャンク単位のプレビュー用で、かつ --verbose 時のみ出力されるため、 * 失敗時の診断にはこの独立した(より大きな)上限を持つ warn ログが必要。 */ export declare const LOG_STDERR_ON_FAILURE_LIMIT = 4000; /** BrowserProxySession の HTTP リクエストタイムアウト(60秒) */ export declare const BROWSER_PROXY_REQUEST_TIMEOUT_MS = 60000; /** Text/image file download timeout (30 seconds) */ export declare const CONVERSATION_FILE_DOWNLOAD_TIMEOUT_MS = 30000; /** Binary file (xlsx/pdf/docx/etc.) download timeout — larger files, longer budget (60 seconds) */ export declare const CONVERSATION_BINARY_DOWNLOAD_TIMEOUT_MS = 60000; export declare const ERR_AGENT_ID_REQUIRED = "agentId is required for chat command"; export declare const ERR_MESSAGE_REQUIRED = "message is required"; export declare const ERR_NO_COMMAND_SPECIFIED = "No command specified"; export declare const ERR_NO_CONTENT_SPECIFIED = "No content specified"; export declare const ERR_NO_FILE_PATH_SPECIFIED = "No file path specified"; export declare const ERR_INVALID_PID = "Invalid PID: must be a positive integer"; export declare const ERR_ANTHROPIC_API_KEY_NOT_SET = "ANTHROPIC_API_KEY is not set. API chat mode requires an Anthropic API key."; export declare const ERR_AUTH_SERVER_START_FAILED = "Failed to start auth server"; export declare const ERR_CLAUDE_CLI_NOT_FOUND = "claude CLI \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002Claude Code \u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"; export declare const ERR_CODEX_CLI_NOT_FOUND = "codex CLI \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002Codex CLI \u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"; export declare const ERR_CHAT_REQUIRES_CLIENT = "chat command requires commandId and client"; export declare const ERR_E2E_TEST_REQUIRES_CLIENT = "e2e_test command requires commandId and client"; export declare const ERR_SETUP_REQUIRES_CALLBACK = "setup command requires onSetup callback"; export declare const ERR_CONFIG_SYNC_REQUIRES_CALLBACK = "config_sync command requires onConfigSync callback"; export declare const ERR_REBOOT_REQUIRES_CALLBACK = "reboot command requires onReboot callback"; export declare const ERR_UPDATE_REQUIRES_CALLBACK = "update command requires onUpdate callback"; export declare const ERR_SYNC_REPOSITORY_REQUIRES_CALLBACK = "sync_repository command requires onSyncRepository callback"; export declare const API_ENDPOINTS: { readonly REGISTER: (tenantCode: string) => string; readonly HEARTBEAT: (tenantCode: string) => string; readonly REPLICA_LIMIT: (tenantCode: string) => string; readonly RELEASE_INSTANCE: (tenantCode: string) => string; readonly COMMANDS_PENDING: (tenantCode: string) => string; readonly COMMAND: (tenantCode: string, commandId: string) => string; readonly COMMAND_RESULT: (tenantCode: string, commandId: string) => string; readonly COMMAND_CHUNKS: (tenantCode: string, commandId: string) => string; readonly VERSION: "/api/agent/version"; readonly CONNECTION_STATUS: (tenantCode: string) => string; readonly CONFIG: (tenantCode: string) => string; readonly AWS_CREDENTIALS: (tenantCode: string) => string; readonly DB_CREDENTIALS: (tenantCode: string) => string; readonly REPO_CREDENTIALS: (tenantCode: string, repositoryId: string) => string; readonly PROJECT_CONFIG: (tenantCode: string) => string; readonly SSH_CREDENTIALS: (tenantCode: string, hostId: string) => string; readonly SERVER_SETUP_SSH_CREDENTIAL: (tenantCode: string, commandId: string) => string; readonly SERVER_SETUP_VARIABLES: (tenantCode: string, commandId: string) => string; readonly SERVER_SETUP_PROGRESS: (tenantCode: string, commandId: string) => string; readonly SSH_EXEC_CREDENTIAL: (tenantCode: string, commandId: string) => string; readonly BROWSER_CREDENTIALS: (tenantCode: string) => string; readonly E2E_ENV_VARIABLES: (tenantCode: string) => string; readonly E2E_SUPPORT_FILES: (tenantCode: string, _projectCode: string) => string; readonly FILES_UPLOAD_URL: (tenantCode: string, projectCode: string) => string; readonly FILES_DOWNLOAD_URL: (tenantCode: string, projectCode: string) => string; readonly PROJECT_FILES_LIST: (tenantCode: string, projectCode: string) => string; readonly PROJECT_FILES_DOWNLOAD_URL: (tenantCode: string, projectCode: string) => string; readonly E2E_EXECUTION_STATUS: (tenantCode: string, _projectCode: string, executionId: string) => string; readonly E2E_EXECUTION_STEPS: (tenantCode: string, _projectCode: string, executionId: string) => string; readonly E2E_EXECUTION_SCRIPT: (tenantCode: string, _projectCode: string, executionId: string) => string; readonly LOG_CHUNK: (tenantCode: string) => string; readonly LOG_SESSION: (tenantCode: string) => string; readonly ALERTS: (tenantCode: string, projectCode: string) => string; readonly ALERT: (tenantCode: string, projectCode: string, alertNumber: string) => string; readonly ALERT_STATUS: (tenantCode: string, projectCode: string, alertNumber: string) => string; readonly ALERT_ACTIVE_ISSUE: (tenantCode: string, projectCode: string) => string; readonly ALERT_RESOLVE_ISSUE: (tenantCode: string, projectCode: string, alertNumber: string) => string; readonly ISSUES: (tenantCode: string, projectCode: string) => string; readonly AGENT_TOOL_SEND_SLACK_MESSAGE: (tenantCode: string) => string; readonly AGENT_TOOL_SEND_SLACK_FILE: (tenantCode: string) => string; readonly AGENT_TOOL_TRIGGER_ALARM: (tenantCode: string) => string; readonly AGENT_TOOL_READ_SLACK_THREAD: (tenantCode: string) => string; readonly AGENT_TOOL_TRIGGER_E2E_TEST: (tenantCode: string) => string; readonly AGENT_KNOWLEDGE: (tenantCode: string) => string; readonly ECS_AGENTS: (tenantCode: string) => string; }; export declare const ONESHOT_ENV_VARS: { readonly AGENT_MODE: "AGENT_MODE"; readonly COMMAND_ID: "COMMAND_ID"; readonly AGENT_ID: "AGENT_ID"; readonly TENANT_CODE: "TENANT_CODE"; readonly PROJECT_CODE: "PROJECT_CODE"; readonly API_BASE_URL: "API_BASE_URL"; readonly AGENT_ONESHOT_TOKEN: "AGENT_ONESHOT_TOKEN"; }; /** Value of AGENT_MODE that switches the CLI into oneshot (ECS container) mode */ export declare const AGENT_MODE_ONESHOT = "oneshot"; /** * Capability declared by agents that can execute a server-setup recipe body * (`server_setup_exec` with custom Ansible tasks). The api dispatch * (`ServerSetupDispatchService`) refuses to dispatch a body-carrying recipe to * any agent that does not advertise this — must stay in sync with the api's * `SERVER_SETUP_CUSTOM_TASKS_CAPABILITY`. */ export declare const SERVER_SETUP_CUSTOM_TASKS_CAPABILITY = "server_setup_custom_tasks"; /** * Limits the API enforces on a server-setup progress request * (`SubmitServerSetupProgressDto` / `ServerSetupProgressEventDto` in the api * repo). Mirrored here — the two repos cannot share code — and they MUST be * kept in sync: `ValidationPipe` rejects the *entire* request with a 400 when * any one of them is exceeded, and the tailer has already advanced its read * offset by then, so an oversized batch is lost silently rather than retried. * That is why the client chunks and truncates instead of sending raw. */ export declare const SERVER_SETUP_MAX_PROGRESS_EVENTS_PER_REQUEST = 500; export declare const SERVER_SETUP_MAX_PROGRESS_TASK_NAME_LENGTH = 1000; export declare const SERVER_SETUP_MAX_PROGRESS_MESSAGE_LENGTH = 10000; /** * `seq` used by the one synthetic progress event the agent writes itself: the * notice that the awaiting-self-restart declaration did not get through. * * Deliberately far above anything the Ansible callback plugin assigns (it * counts tasks from 1), because the api's idempotency key is * `(executionId, seq)` and a collision would be dropped by `skipDuplicates` — * silently, which is the exact failure mode this notice exists to end. Sorting * last is also correct: the declaration happens just before the agent restarts * itself, after every other task of the run. * * Must stay within PostgreSQL's `integer` range (the api column is `Int`). */ export declare const SERVER_SETUP_SELF_RESTART_NOTICE_SEQ = 2000000000; /** Fixed container name used in the registered ECS task definition */ export declare const ECS_AGENT_CONTAINER_NAME = "app"; /** Task definition family prefix: ai-support-ecs-agent-{tenantCode}-{agentId} */ export declare const ECS_TASK_FAMILY_PREFIX = "ai-support-ecs-agent"; /** Default ECS task size (Fargate: 1 vCPU / 2 GB) */ export declare const DEFAULT_ECS_CPU = 1024; export declare const DEFAULT_ECS_MEMORY = 2048; /** Default awslogs log group for ECS execution agents */ export declare const DEFAULT_ECS_LOG_GROUP = "/ai-support-agent/ecs-agent"; /** ECS agent id prefix (agentId = `ecs-{uuid}`) */ export declare const ECS_AGENT_ID_PREFIX = "ecs"; /** * Budget for resolving AWS credentials when deciding whether to advertise * the ecs_launch capability at registration time. Kept short so registration * is not delayed on hosts without any credential source (IMDS probing etc.). */ export declare const ECS_LAUNCHER_DETECT_TIMEOUT_MS = 3000; export declare const CONFIG_SYNC_DEBOUNCE_MS = 2000; export declare const INITIAL_CONFIG_SYNC_MAX_RETRIES = 3; export declare const INITIAL_CONFIG_SYNC_RETRY_DELAY_MS = 2000; export declare const SSE_PREFIX = "data: "; export declare const SSE_DONE = "[DONE]"; export declare const SSE_EVENT: { readonly MESSAGE_START: "message_start"; readonly MESSAGE_DELTA: "message_delta"; readonly CONTENT_BLOCK_DELTA: "content_block_delta"; readonly CONTENT_BLOCK_START: "content_block_start"; }; export declare const ANTHROPIC_CONTENT_TYPE: { readonly TEXT_DELTA: "text_delta"; readonly TOOL_USE: "tool_use"; readonly INPUT_JSON_DELTA: "input_json_delta"; }; export declare const MAX_TOOL_TURNS = 8; export declare const API_TOOL_READ_MAX_LINES = 25000; export declare const API_TOOL_READ_MAX_BYTES: number; export declare const API_TOOL_GREP_MAX_MATCHES = 200; export declare const API_TOOL_GREP_MAX_LINE_CHARS = 2000; export declare const API_TOOL_GLOB_MAX_RESULTS = 1000; export declare const API_TOOL_MAX_READABLE_FILE_BYTES: number; export declare const API_TOOL_WORKER_TIMEOUT_MS = 3000; export declare const GIT_CLONE_TIMEOUT = 120000; export declare const GIT_FETCH_TIMEOUT = 60000; export declare const GIT_CHECKOUT_TIMEOUT = 30000; export declare const GIT_CONFIG_TIMEOUT = 10000; export declare const SSH_NO_HOST_CHECK_FLAGS = "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"; /** * Max time to wait for in-flight commands to drain before giving up on a * graceful release. Chosen to roughly cover CHAT_TIMEOUT (5 minutes) for * in-flight chat commands. CHAT_TOOL_EXECUTION_TIMEOUT (30 minutes) can still * exceed this — an accepted residual limit. Those long-running cases fall * through to the existing 90-second server-side heartbeat-timeout reclaim * instead of an explicit release. */ export declare const SHUTDOWN_DRAIN_TIMEOUT_MS = 300000; /** Poll interval while waiting for in-flight commands to finish draining. */ export declare const SHUTDOWN_DRAIN_POLL_INTERVAL_MS = 250; /** * Drain budget for the forked multi-project-per-host path (ChildProcessManager / * project-worker.ts). * * This used to be a separate, much smaller budget (6000ms), sized on the * assumption that the forked-worker path was a niche "multiple projects on * one developer host" scenario where replica-limit contention was unlikely. * That assumption was wrong: `agent-runner.ts`'s `startAgent()` unconditionally * uses `ChildProcessManager` (`getProjectList()` + "Always use * ChildProcessManager for dynamic project management") once any local config * file exists — i.e. the steady state after any project has ever been * registered/configured, which persists even inside Docker/K8s containers via * a mounted config dir. So this is actually the drain budget for the * common/default deployment path, not a narrow one, and must give in-flight * commands the same protection as the single-project (`--token`+`--apiUrl`) * path. Kept as its own named constant (rather than call sites reusing * SHUTDOWN_DRAIN_TIMEOUT_MS directly) purely for documentation clarity at the * fork-path call sites; it must stay equal to SHUTDOWN_DRAIN_TIMEOUT_MS. */ export declare const FORK_SHUTDOWN_DRAIN_TIMEOUT_MS = 300000; /** Timeout for the POST .../agent/instances/self/release call made at the end of a graceful shutdown. */ export declare const AGENT_RELEASE_REQUEST_TIMEOUT_MS = 3000; /** * Timeout passed to `Sentry.flush()` (see sentry.ts's `flushSentry`), called * after releaseSelf() at the end of a forked worker's graceful exit. Named so * CHILD_PROCESS_STOP_TIMEOUT_MS's invariant test can reference the real value * directly instead of a hardcoded literal. */ export declare const SENTRY_FLUSH_TIMEOUT_MS = 2000; /** * Extra seconds of grace period beyond the in-flight-command drain * (SHUTDOWN_DRAIN_TIMEOUT_MS) budgeted for the releaseSelf() call and process * exit overhead at the end of a graceful shutdown. Shared by every * deployment mode that needs to derive its own stop/terminate grace period * from the drain timeout — Kubernetes' `terminationGracePeriodSeconds` * (manifest-generator.ts), Docker's `docker stop --time` * (docker-supervisor.ts), and the forked-worker parent's * `CHILD_PROCESS_STOP_TIMEOUT_MS` (below) — so they cannot silently drift * apart from each other or from SHUTDOWN_DRAIN_TIMEOUT_MS itself. */ export declare const SHUTDOWN_GRACE_PERIOD_MARGIN_SECONDS = 20; /** * Grace period (seconds) derived from SHUTDOWN_DRAIN_TIMEOUT_MS plus the * margin above. Equals 320 with the current constants (300s drain + 20s * margin). Consumers that need it in milliseconds should multiply by 1000 * rather than re-deriving from SHUTDOWN_DRAIN_TIMEOUT_MS separately. */ export declare const SHUTDOWN_GRACE_PERIOD_SECONDS: number; export declare const CHILD_PROCESS_MAX_RESTARTS = 5; export declare const CHILD_PROCESS_RESTART_DELAY_MS = 5000; /** * How long the parent waits for a forked worker to exit on its own (via the * graceful 'shutdown' IPC message) before SIGKILLing it. * * Must comfortably exceed the forked worker's own worst-case graceful-exit * chain (see `handleGracefulExit` in project-worker.ts): drain * (FORK_SHUTDOWN_DRAIN_TIMEOUT_MS) + releaseSelf() HTTP call * (AGENT_RELEASE_REQUEST_TIMEOUT_MS) + Sentry flush (SENTRY_FLUSH_TIMEOUT_MS). * See the "constant invariants" describe block in * __tests__/child-process-manager.spec.ts, which asserts the * FORK_SHUTDOWN_DRAIN_TIMEOUT_MS + AGENT_RELEASE_REQUEST_TIMEOUT_MS + * SENTRY_FLUSH_TIMEOUT_MS < CHILD_PROCESS_STOP_TIMEOUT_MS relationship so it * cannot silently drift out of sync again. * * IMPORTANT — direction of the margin vs. SHUTDOWN_GRACE_PERIOD_SECONDS: * this parent process (ChildProcessManager runs in the host/CLI process, not * inside a forked child) is itself the thing an outer orchestrator sends * SIGTERM to — e.g. Kubernetes sends SIGTERM to this very process and, after * `terminationGracePeriodSeconds` (derived from SHUTDOWN_GRACE_PERIOD_SECONDS, * see manifest-generator.ts), SIGKILLs it. If CHILD_PROCESS_STOP_TIMEOUT_MS * (the point at which THIS process gives up waiting on a wedged forked * worker and SIGKILLs it) were set equal to or greater than that same * outer deadline, the outer SIGKILL could land while this process is still * inside stopAll()/stopProject() (or its own post-loop cleanup) — abandoning * that cleanup instead of letting it finish. So, unlike Docker's * `docker stop --time` timer in docker-supervisor.ts (which bounds a * SEPARATE, ancestor-level process's own wait and legitimately adds margin * on TOP of SHUTDOWN_GRACE_PERIOD_SECONDS to outlast it), this constant must * leave margin BELOW SHUTDOWN_GRACE_PERIOD_SECONDS instead: it fires 10s * before the outer orchestrator's own SIGKILL deadline, so this process has * a window to finish giving up on the child and exit cleanly first. */ export declare const CHILD_PROCESS_STOP_TIMEOUT_MS: number; export declare const TOKEN_WATCH_INTERVAL_MS = 5000; export declare const INFINITE_RECONNECT_RETRIES: number; export declare const DEFAULT_WS_RECONNECT_BASE_DELAY_MS = 1000; export declare const APPSYNC_MAX_RECONNECT_RETRIES: number; export declare const APPSYNC_RECONNECT_BASE_DELAY_MS = 1000; export declare const WS_RECONNECT_MAX_DELAY_MS = 60000; export declare const APPSYNC_CONNECT_FAILURE_ESCALATION_THRESHOLD = 5; export declare const WS_CLOSE_CODE_AUTH_REJECTED = 4001; export declare const WS_HEARTBEAT_INTERVAL_MS = 30000; export declare const WS_PONG_MAX_MISSED = 3; export declare const REGISTER_RETRY_BASE_DELAY_MS = 1000; export declare const REGISTER_RETRY_MAX_DELAY_MS = 60000; export declare const REGISTER_AUTH_ERROR_DELAY_MS: number; export declare const REPLICA_STANDBY_RETRY_DELAY_MS = 30000; export declare const DOCKER_MAX_SESSION_LOG_BYTES: number; export declare const DOCKER_MAX_LOG_CHUNK_BYTES = 100000; export declare const DOCKER_LOG_FLUSH_INTERVAL_MS = 1000; export declare const DOCKER_BUILD_ERROR_MAX_BYTES = 3000; export declare const DOCKER_MARKER_BUILT_HASH = "docker-built-hash"; export declare const DOCKER_MARKER_REBUILD_NEEDED = "docker-rebuild-needed"; export declare const DOCKER_MARKER_CUSTOMIZATION_HASH = "docker-customization-hash"; export declare const DOCKER_MARKER_REGISTERED_AGENT_ID = "docker-registered-agent-id"; export declare const DOCKER_UPDATE_EXIT_CODE = 42; export declare const DOCKER_RESTART_EXIT_CODE = 43; export declare const UPDATE_BUSY_WAIT_TIMEOUT_MS: number; export declare const UPDATE_BUSY_POLL_INTERVAL_MS = 3000; export declare const UPDATE_FORCED_BUSY_WAIT_TIMEOUT_MS = 30000; export declare const BUSY_QUERY_TIMEOUT_MS = 5000; export declare const DELAYED_RESTART_MS = 1000; export declare const NOTIFICATION_ACTION: { readonly AGENT_COMMAND: "agent-command"; readonly CONFIG_UPDATE: "config-update"; readonly ALERT_CREATED: "alert-created"; readonly AGENT_LOG: "agent-log"; }; export declare const CLI_FLAG_VERBOSE = "--verbose"; export declare const CLI_FLAG_NO_DOCKER = "--no-docker"; export declare const CLI_FLAG_NO_DOCKERFILE_SYNC = "--no-dockerfile-sync"; export declare const CLI_FLAG_NO_IMAGE_PULL = "--no-image-pull"; export declare const CLI_FLAG_AUTO_UPDATE = "--auto-update"; export declare const CLI_FLAG_NO_AUTO_UPDATE = "--no-auto-update"; /** Container name of the Tailscale sidecar in the oneshot ECS task definition. */ export declare const TAILSCALE_SIDECAR_CONTAINER_NAME = "tailscale"; /** Image the Tailscale sidecar container runs. */ export declare const TAILSCALE_SIDECAR_IMAGE = "tailscale/tailscale"; /** * Default SOCKS5 port the sidecar's `tailscaled --tun=userspace-networking * --socks5-server=localhost:` listens on. Overridable per SSH host via * `SshExecCredential.socksPort` (design doc section 3) to avoid collisions * when multiple tailnets are in play. */ export declare const TAILSCALE_SOCKS_PORT = 1055; /** * Env var name used to inject the Tailscale authkey into the sidecar * container via RunTask `containerOverrides` — never written to the task * definition itself (design doc section 4, "認証情報の非露出"). Must never be * logged. */ export declare const TAILSCALE_AUTHKEY_ENV_VAR = "TS_AUTHKEY"; //# sourceMappingURL=constants.d.ts.map