From 234e39ca605eddaf950b0808d4048f7c68a19ac0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 26 Apr 2026 01:33:17 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20parents[4]=20IndexError=20in=20Docker=20?= =?UTF-8?q?=E2=80=94=20path=20too=20short=20in=20container?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit knowledge_brain.py, memory_engine.py, session_continuity.py used parents[4] to find memory/ dir. In Docker (/app/app/services/file.py) there are only 4 parents total, causing IndexError: 4. Fix: walk up parents dynamically until memory/ dir is found. https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs --- .../backend/app/services/knowledge_brain.py | 14 +++++++++++--- .../backend/app/services/memory_engine.py | 7 ++++++- .../backend/app/services/session_continuity.py | 7 ++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/salesflow-saas/backend/app/services/knowledge_brain.py b/salesflow-saas/backend/app/services/knowledge_brain.py index d4765f16..9ea4fd5d 100644 --- a/salesflow-saas/backend/app/services/knowledge_brain.py +++ b/salesflow-saas/backend/app/services/knowledge_brain.py @@ -10,9 +10,17 @@ from typing import Any, Optional from pydantic import BaseModel, Field logger = logging.getLogger(__name__) -WIKI_DIR = Path(__file__).resolve().parents[4] / "memory" / "wiki" -INDEX_DIR = Path(__file__).resolve().parents[4] / "memory" / "indexes" -MEMORY_DIR = Path(__file__).resolve().parents[4] / "memory" +def _find_memory_dir() -> Path: + p = Path(__file__).resolve() + for parent in p.parents: + candidate = parent / "memory" + if candidate.is_dir(): + return candidate + return p.parents[min(2, len(p.parents) - 1)] / "memory" + +MEMORY_DIR = _find_memory_dir() +WIKI_DIR = MEMORY_DIR / "wiki" +INDEX_DIR = MEMORY_DIR / "indexes" STALE_DAYS = 30 diff --git a/salesflow-saas/backend/app/services/memory_engine.py b/salesflow-saas/backend/app/services/memory_engine.py index d64defcc..67eba935 100644 --- a/salesflow-saas/backend/app/services/memory_engine.py +++ b/salesflow-saas/backend/app/services/memory_engine.py @@ -9,7 +9,12 @@ from typing import Any, Optional from pydantic import BaseModel, Field logger = logging.getLogger(__name__) -MEMORY_BASE = Path(__file__).resolve().parents[4] / "memory" +def _find_memory(): + for p in Path(__file__).resolve().parents: + if (p / "memory").is_dir(): + return p / "memory" + return Path(__file__).resolve().parent.parent / "memory" +MEMORY_BASE = _find_memory() STALE_DAYS = 30 diff --git a/salesflow-saas/backend/app/services/session_continuity.py b/salesflow-saas/backend/app/services/session_continuity.py index 1e905643..ab5c4575 100644 --- a/salesflow-saas/backend/app/services/session_continuity.py +++ b/salesflow-saas/backend/app/services/session_continuity.py @@ -9,7 +9,12 @@ from typing import Any, Optional from pydantic import BaseModel, Field logger = logging.getLogger(__name__) -SESSIONS_DIR = Path(__file__).resolve().parents[4] / "memory" / "_sessions" +def _find_sessions(): + for p in Path(__file__).resolve().parents: + if (p / "memory").is_dir(): + return p / "memory" / "_sessions" + return Path(__file__).resolve().parent.parent / "memory" / "_sessions" +SESSIONS_DIR = _find_sessions() SESSIONS_DIR.mkdir(parents=True, exist_ok=True)