from __future__ import annotations import os from pathlib import Path from asrpipe.config import CFG DATA = Path(os.getenv("ASR_DATA_DIR", "/data")) INBOX = DATA / "inbox" PROCESSING = DATA / "processing" PROCESSED = DATA / "processed" FAILED = DATA / "failed" TRANSCRIPTS = DATA / "transcripts" STATE = Path(os.getenv("ASR_STATE_DIR", str(CFG.state_dir))) DRAFTS = Path(os.getenv("ASR_DRAFTS_DIR", str(DATA / "artifacts" / "drafts"))) RESULTS = Path(os.getenv("ASR_RESULTS_DIR", str(DATA / "artifacts" / "results"))) LOGS = DATA / "logs" META = STATE / "uploads" REVISION_QUEUE = Path(os.getenv("ASR_REVISION_QUEUE_DIR", str(STATE / "revision-queue"))) DB = STATE / "intake.db" SUPPORTED = {".m4a", ".mp3", ".wav", ".mp4", ".aac", ".ogg", ".opus", ".webm", ".flac"} PUBLIC_URL = os.getenv("ASR_PUBLIC_URL", "http://192.168.50.49:8788").rstrip("/") AGENT_TOKEN = os.getenv("ASR_AGENT_TOKEN", "") WEB_PASSWORD = os.getenv("ASR_WEB_PASSWORD", "") DIARIZE_URL = os.getenv("ASR_DIARIZE_URL", CFG.diarize_url) DEFAULT_PROVIDER = os.getenv("ASR_PROVIDER", CFG.asr_provider) MAX_UPLOAD = int(os.getenv("ASR_UPLOAD_MAX_BYTES", str(4 * 1024**3))) POLL_SECONDS = max(1, int(os.getenv("ASR_POLL_SECONDS", "5"))) STABLE_SECONDS = max(1, int(os.getenv("ASR_STABLE_SECONDS", "10"))) MAX_ATTEMPTS = max(1, int(os.getenv("ASR_MAX_ATTEMPTS", "3"))) def ensure_dirs() -> None: # Keep asrpipe CFG aligned with container/service paths when running under asrservice CFG.state_dir for path in ( INBOX, PROCESSING, PROCESSED, FAILED, TRANSCRIPTS, DRAFTS, RESULTS, STATE, LOGS, META, REVISION_QUEUE, DATA / "cache", DATA / "artifacts" / "raw", DATA / "artifacts" / "results", DATA / "vault" / "minutes", DATA / "vault" / "People", DATA / "vault" / "Companies", DATA / "vault" / "Projects", ): path.mkdir(parents=True, exist_ok=True)